sql作业和日期时间参数

发布于 2024-08-30 05:16:42 字数 276 浏览 9 评论 0原文

另一位开发人员创建了一个存储过程,该过程设置为每月作为 SQL 作业运行。它需要一个日期时间参数。当我尝试在作业或查询窗口中调用它时,我收到错误')'附近的语法不正确。执行它的调用是:

exec CreateHeardOfUsRecord getdate()

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

Another developer created a stored 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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

幼儿园老大 2024-09-06 05:16:42

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

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

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.

蹲在坟头点根烟 2024-09-06 05:16:42

通过查看 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 ')'.

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 ')'.
绝對不後悔。 2024-09-06 05:16:42

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

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

他是夢罘是命 2024-09-06 05:16:42

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

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 

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 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文