首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用GETDATE调用存储过程时')‘附近的语法不正确

使用GETDATE调用存储过程时')‘附近的语法不正确
EN

Stack Overflow用户
提问于 2010-03-08 11:21:45
回答 3查看 85.7K关注 0票数 144

也许我有一个“下午”的时刻,但谁能解释一下为什么我会

消息102,级别15,状态1,第2行

')‘附近的语法不正确。

运行时

代码语言:javascript
复制
CREATE PROC DisplayDate 
    (@DateVar DATETIME) 
AS 
BEGIN
    SELECT @DateVar
END
GO

EXEC DisplayDate GETDATE();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-08 11:25:08

不能将函数调用作为参数传递给存储过程。相反,请使用中间变量:

代码语言:javascript
复制
DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;
票数 188
EN

Stack Overflow用户

发布于 2013-07-23 20:27:43

正如米奇小麦提到的,你不能传递一个函数。

如果在您的情况下,您应该传递一个预先计算的值或GETDATE() -您可以使用默认值。例如,修改您的存储过程:

代码语言:javascript
复制
ALTER PROC DisplayDate 
(
    @DateVar DATETIME = NULL
) AS 
BEGIN
    set @DateVar=ISNULL(@DateVar,GETDATE())

    --the SP stuff here
    SELECT @DateVar
END
GO

然后尝试:

代码语言:javascript
复制
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate

备注:这里我假设这个参数没有使用空值。如果不是您的情况-您可以使用另一个未使用的值,例如'1900-01-01 00:00:00.000‘

票数 21
EN

Stack Overflow用户

发布于 2021-05-26 16:08:23

我发现的解决方案是在执行之前声明temp变量,并将它们传递到执行行中。

` `Declare @ddate date

set ddate = getdate()

EXEC DisplayDate @ddate;`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2399104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档