出于某种原因,以下给了我一个错误:
DECLARE @Param1 DATETIME2(3)=...; -- Assign some date/time
DECLARE @Param2 DATETIME;
DECLARE @Param3 DATETIME;
EXEC dbo.SomeStoredProc CONVERT(DATE, @Param1), @Param2 output, @Param3 output;
输出是编译失败:
Msg 156, Level 15, State 1, Line 5 Incorrect syntax near the keyword '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;
最佳答案
存储过程参数不能包含表达式,它们必须是常量值或 @
变量。在您的示例中,CONVERT()
是一个表达式,因此是不允许的。
默认参数值也是如此。
关于sql-server-2008 - 为什么在存储过程调用的参数之一上使用 CONVERT 会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230960/