sql job和datetime参数

时间:2010-04-23 17:04:38

标签: sql scheduled-tasks getdate

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

exec CreateHeardOfUsRecord getdate()

当我给它一个类似exec CreateHeardOfUsRecord '4/1/2010'的硬编码日期时,它运行正常。知道为什么我不能在这种情况下使用getdate()吗?感谢。

4 个答案:

答案 0 :(得分:3)

使用Exec must either be constants or variables传递的参数。 GetDate()被归类为函数。您需要声明一个变量来保存GetDate()的结果,然后将其传递给存储过程。

  

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

答案 1 :(得分:1)

查看EXECUTE (Transact-SQL)

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

您只能传递常量值或变量或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 ')'.

答案 2 :(得分:0)

尝试传递Convert(varchar,GetDate(),101)

答案 3 :(得分:0)

在这里使用Km的代码是一种方法

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date