SQL作业和DateTime参数
-
01-10-2019 - |
题
另一位开发人员创建了一个存储过程,该过程设置为每月运行为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
不隶属于 StackOverflow