另一位开发人员创建了一个存储过程,该过程设置为每月运行为SQL作业。它需要DateTime的一个参数。当我尝试在作业中或仅在查询窗口中调用它时,我会遇到错误 Incorrect syntax near ')'. 。执行的电话是:

exec CreateHeardOfUsRecord getdate()

当我给它一个硬编码日期时 exec CreateHeardOfUsRecord '4/1/2010' 它可以正常工作。知道为什么我不能使用 getdate() 在这种情况下?谢谢。

有帮助吗?

解决方案

参数传递给exec 必须是常数或变量. 。 getDate()被归类为函数。您需要声明一个变量以保存getDate()的结果,然后将其传递给存储过程。

提供的值必须是常数或变量;您不能将函数名称指定为参数值。可以用户定义变量或系统变量,例如@@ spid。

其他提示

通过看 执行(Transact-SQL)

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }

您只能通过常数值或变量或默认子句

试试看:

create procedure xy_t
@p datetime
as
select @p
go

exec xy_t GETDATE()

输出:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.

尝试通过转换(Varchar,GetDate(),101)

在这里使用KM的代码是一种做到这一点的方法

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

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