')'用GETDATE调用storedproc时语法不正确

也许我有一个'下午'的时刻,但任何人都可以解释为什么我得到

'102',等级15,状态1,行2在')'附近语法不正确。

运行时

CREATE PROC DisplayDate ( @DateVar DATETIME ) AS BEGIN SELECT @DateVar END GO EXEC DisplayDate GETDATE(); 

您不能将函数调用作为parameter passing给您的存储过程。 而是使用一个中间variables:

 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”