这里第一个问题是以下几点.我写了以下代码,一切正常:
DECLARE @subject NVARCHAR(100) SET @subject = 'Report executed on ' + CONVERT(VARCHAR(12),GETDATE(),107) SELECT @subject
结果:2012年8月17日执行的报告
但是当设置msdb.dbo.sp_send_dbmail过程的参数时尝试连接上一个字符串时,它将失败
EXEC msdb.dbo.sp_send_dbmail @profile_name='XXX',@recipients='XXXX@XXXXX.com',@subject = 'Report executed on ' + CONVERT(VARCHAR(12),107),@body= @tableHTML,@body_format = 'HTML';
我知道我可以声明并发送一个变量到参数,但我想了解为什么在参数中直接连接时失败.谢谢你的时间和知识
解决方法
T-sql存储过程的参数值不能为表达式.他们需要是一个常量或一个变量.
The parameter values supplied with a procedure call must be constants or a variable; a function name cannot be used as a parameter value. Variables can be user-defined or system variables such as @@spid.