另一位开发人员创建了一个存储过程,该过程设置为每个月作为 sql 作业运行。它需要一个日期时间参数。当我尝试在作业中或仅在查询窗口中调用它时,我得到一个错误Incorrect syntax near ')'
。执行它的调用是:
exec CreateHeardOfUsRecord getdate()
当我给它一个硬编码的日期时,exec CreateHeardOfUsRecord '4/1/2010'
它可以正常工作。知道为什么我不能getdate()
在这种情况下使用吗?谢谢。
另一位开发人员创建了一个存储过程,该过程设置为每个月作为 sql 作业运行。它需要一个日期时间参数。当我尝试在作业中或仅在查询窗口中调用它时,我得到一个错误Incorrect syntax near ')'
。执行它的调用是:
exec CreateHeardOfUsRecord getdate()
当我给它一个硬编码的日期时,exec CreateHeardOfUsRecord '4/1/2010'
它可以正常工作。知道为什么我不能getdate()
在这种情况下使用吗?谢谢。
Exec 传递的参数必须是常量或变量。GetDate() 被归类为函数。您需要声明一个变量来保存 GetDate() 的结果,然后将其传递给存储过程。
提供的值必须是常量或变量;您不能将函数名称指定为参数值。变量可以是用户定义的或系统变量,例如@@spid。
[ { 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 ')'.
尝试通过 Convert(varchar, GetDate(), 101)
在这里使用 Km 的代码是一种方法
create procedure xy_t
@p datetime
as
select @p
go
declare @date datetime
set @date = getdate()
exec xy_t @date