这里的第一个问题是以下.我写了下面的代码,一切正常:
DECLARE @subject NVARCHAR(100)
SET @subject = 'Report executed on ' + CONVERT(VARCHAR(12), GETDATE(), 107)
SELECT @subject
Run Code Online (Sandbox Code Playgroud)
结果:报告于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), GETDATE(), 107),
@body= @tableHTML,
@body_format = 'HTML';
Run Code Online (Sandbox Code Playgroud)
我知道我可以声明并向参数发送一个变量,但我想了解为什么它在参数中直接连接时失败了.谢谢你的时间和知识
Kas*_*ash 30
T-SQL存储过程的参数值不能是表达式.它们需要是常数或变量.
过程调用提供的参数值必须是常量或变量; 函数名称不能用作参数值.变量可以是用户定义的,也可以是系统变量,例如@@ spid.
你需要做:
DECLARE @Sub nvarchar(100);
SET @Sub = 'Report executed on ' + CONVERT(VARCHAR(12), GETDATE(), 107);
EXEC msdb.dbo.sp_send_dbmail @profile_name='XXX',
@recipients='XXXX@XXXXX.com',
@subject = @Sub,
@body= @tableHTML,
@body_format = 'HTML';
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44794 次 |
最近记录: |