附近“)”的语法不正确调用存储过程GETDATE
-
25-09-2019 - |
题
也许我具有“下午”了一下,但任何人都可以解释为什么我收到
消息102,级别15,状态1,行2,点击 近 ')' 的语法不正确。
当运行时
CREATE PROC DisplayDate
(@DateVar DATETIME)
AS
BEGIN
SELECT @DateVar
END
GO
EXEC DisplayDate GETDATE();
解决方案
您不能在一个函数调用作为参数传递给您的存储过程传递。代替使用一个中间变量:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
其他提示
作为<强>米奇小麦强>提到不能传递的功能。
如果你的情况,你应该在预先计算的值或GETDATE通过() - 你可以使用默认值。例如,修改存储过程:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
和然后尝试:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
<强>备注强>:在这里,我假定NULL值是在不使用该参数。如果不是你的情况 - 您可以使用另一个未使用的值,例如“1900-01-01 00:00:00.000”
不隶属于 StackOverflow