我正在尝试使用sp_send_dbmail
在Sql Server 2005中发送电子邮件。我有正文和查询作为附件发送。
但是,有时查询将返回一个空数据集。
在我发送电子邮件之前,有没有办法让我测试数据集的结果,如果没有结果,请不要将其作为附件发送。
我想在发送电子邮件之前可能会运行查询,并以这种方式测试结果。然后,我有if-else
如下:
if @@rowcount >0
EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
@subject = @subject,
@body = @body_text, @body_format = 'HTML',
@query = @query,
@attach_query_result_as_file = 1,
@query_result_width = 4000,
@query_attachment_filename = 'Details.txt'
else
EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
@subject = @subject,
@body = @body_text, @body_format = 'HTML'
但我不认为这是解决问题的有效方法。
有什么建议吗? TIA !!
答案 0 :(得分:1)
好吧,我无法在我的工作设置中对此进行测试,因为我们的DBA似乎已阻止访问此过程。但是,我知道sp_send_dbmail
不会在调用脚本中使用局部变量,但它可能允许您使用全局临时表。
这不是一个很好的解决方案,但您可以尝试将查询结果集插入到## tempTable中,然后将传递给sp_send_dbmail
的查询更改为select * from ##tempTable
,如果有> 0行。
这应该至少比运行原始查询2x更好(如果它工作)。完成后请记得放弃它!