开发者

sql job and datetime parameter

开发者 https://www.devze.com 2022-12-27 18:57 出处:网络
Another developer created a stored开发者_Go百科 procedure that is set up to run as a sql job each month.It takes one parameter of datetime.When I try to invoke it in the job or in just a query window

Another developer created a stored开发者_Go百科 procedure that is set up to run as a sql job each month. It takes one parameter of datetime. When I try to invoke it in the job or in just a query window I get an error Incorrect syntax near ')'. The call to execute it is:

exec CreateHeardOfUsRecord getdate()

When I give it a hard coded date like exec CreateHeardOfUsRecord '4/1/2010' it works fine. Any idea why I can't use getdate() in this context? Thanks.


Parameters passed with Exec must either be constants or variables. GetDate() is classed as a function. You need to declare a variable to hold the result of GetDate(), then pass it to the stored procedure.

The supplied value must be a constant or a variable; you cannot specify a function name as a parameter value. Variables can be user-defined or system variables such as @@spid.


by looking at EXECUTE (Transact-SQL)

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

you can only pass in a constant value or a variable or the DEFAULT clause

try it out:

create procedure xy_t
@p datetime
as
select @p
go

exec xy_t GETDATE()

output:

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


Try passing Convert(varchar, GetDate(), 101)


Using Km's code here is a way to do it

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 
0

精彩评论

暂无评论...
验证码 换一张
取 消