Параметр работы SQL и DateTime
-
01-10-2019 - |
Вопрос
Другой разработчик создал сохраненную процедуру, которая устанавливается для запуска в качестве SQL-задания каждый месяц. Требуется один параметр dateTime. Когда я пытаюсь вызвать его в работе или в окне запроса, я получаю ошибку Incorrect syntax near ')'
. Отказ Вызов для выполнения это:
exec CreateHeardOfUsRecord getdate()
Когда я даю ей жесткую кодированную дату, как exec CreateHeardOfUsRecord '4/1/2010'
Работает нормально. Любая идея, почему я не могу использовать getdate()
в данном контексте? Спасибо.
Решение
Параметры, пройденные с EXEC должны быть константы или переменными. Отказ Getdate () классифицируется как функция. Вам необходимо объявить переменную для удержания результата GetDate (), затем пропустите его в хранимую процедуру.
Поставляемое значение должно быть постоянной или переменной; Вы не можете указать имя функции в качестве значения параметра. Переменные могут быть определены пользователем или системные переменные, такие как @@ spid.
Другие советы
Смотря Выполнить (Transact-SQL)
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
Вы можете проходить только в постоянном значении или переменной или пункте по умолчанию
Попробуйте:
create procedure xy_t
@p datetime
as
select @p
go
exec xy_t GETDATE()
выход:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
Попробуйте пройти преобразовывать (varchar, getdate (), 101)
Использование КМ-кода здесь - способ сделать это
create procedure xy_t
@p datetime
as
select @p
go
declare @date datetime
set @date = getdate()
exec xy_t @date