也许我具有“下午”了一下,但任何人都可以解释为什么我收到

  

消息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”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top