Почему я получаю сообщение об ошибке, используя CONVERT для одного из аргументов хранимого вызова proc? - PullRequest
4 голосов
/ 22 ноября 2011

По какой-то причине следующее выдает ошибку:

DECLARE @Param1 DATETIME2(3)=...; -- Assign some date/time
DECLARE @Param2 DATETIME;
DECLARE @Param3 DATETIME;

EXEC dbo.SomeStoredProc CONVERT(DATE, @Param1), @Param2 output, @Param3 output;

Выход - ошибка компиляции:

Сообщение 156, Уровень 15, Состояние 1, Строка 5 Неверный синтаксис рядом с ключевым словом 'CONVERT'.

Изменение на следующее устраняет проблему:

DECLARE @Param1 DATETIME2(3)=...; -- Assign some date/time
DECLARE @Param2 DATETIME;
DECLARE @Param3 DATETIME;
DECLARE @TempDate DATE=CONVERT(DATE,@Param1);

EXEC dbo.SomeStoredProc @TempDate, @Param2 output, @Param3 output;

1 Ответ

4 голосов
/ 22 ноября 2011

Параметры хранимой процедуры не могут содержать выражений, они должны быть постоянными значениями или @ переменными.В вашем примере CONVERT() является выражением и поэтому не допускается.

То же самое верно для значений параметров по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...