Вопрос

Другой разработчик создал сохраненную процедуру, которая устанавливается для запуска в качестве 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 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top