sql job и параметр datetime - PullRequest
       14

sql job и параметр datetime

2 голосов
/ 23 апреля 2010

Другой разработчик создал хранимую процедуру, настроенную на выполнение в качестве задания sql каждый месяц. Требуется один параметр даты и времени. Когда я пытаюсь вызвать его в работе или просто в окне запроса, я получаю сообщение об ошибке Incorrect syntax near ')'. Вызов, чтобы выполнить это:

exec CreateHeardOfUsRecord getdate()

Когда я даю ей жестко закодированную дату, такую ​​как exec CreateHeardOfUsRecord '4/1/2010', она работает нормально. Есть идеи, почему я не могу использовать getdate() в этом контексте? Спасибо.

Ответы [ 4 ]

3 голосов
/ 23 апреля 2010

Параметры, передаваемые с Exec , должны быть либо константами, либо переменными . GetDate () классифицируется как функция. Вам необходимо объявить переменную для хранения результата GetDate (), а затем передать ее хранимой процедуре.

Предоставленное значение должно быть постоянным или переменная; Вы не можете указать имя функции в качестве значения параметра. Переменные могут быть определены пользователем или системные переменные, такие как @@ spid.

1 голос
/ 23 апреля 2010

, глядя на EXECUTE (Transact-SQL)

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }

вы можете передать только постоянное значение или переменную или предложение 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 ')'.
0 голосов
/ 23 апреля 2010

Использование кода Km - вот способ сделать это

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 
0 голосов
/ 23 апреля 2010

Попробуйте передать Convert (varchar, GetDate (), 101)

...