也许我有一个“下午”的时刻,但谁能解释一下为什么我会
消息102,级别15,状态1,第2行
')‘附近的语法不正确。
运行时
CREATE PROC DisplayDate
(@DateVar DATETIME)
AS
BEGIN
SELECT @DateVar
END
GO
EXEC DisplayDate GETDATE();
发布于 2010-03-08 11:25:08
不能将函数调用作为参数传递给存储过程。相反,请使用中间变量:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
发布于 2013-07-23 20:27:43
正如米奇小麦提到的,你不能传递一个函数。
如果在您的情况下,您应该传递一个预先计算的值或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
备注:这里我假设这个参数没有使用空值。如果不是您的情况-您可以使用另一个未使用的值,例如'1900-01-01 00:00:00.000‘
发布于 2021-05-26 16:08:23
我发现的解决方案是在执行之前声明temp变量,并将它们传递到执行行中。
` `Declare @ddate date
set ddate = getdate()
EXEC DisplayDate @ddate;`
https://stackoverflow.com/questions/2399104
复制相似问题