测试sp_send_dbmail查询的结果集?

时间:2011-02-02 15:44:08

标签: sql sql-server-2005 sp-send-dbmail

我正在尝试使用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 !!

1 个答案:

答案 0 :(得分:1)

好吧,我无法在我的工作设置中对此进行测试,因为我们的DBA似乎已阻止访问此过程。但是,我知道sp_send_dbmail不会在调用脚本中使用局部变量,但它可能允许您使用全局临时表。

这不是一个很好的解决方案,但您可以尝试将查询结果集插入到## tempTable中,然后将传递给sp_send_dbmail的查询更改为select * from ##tempTable,如果有> 0行。

这应该至少比运行原始查询2x更好(如果它工作)。完成后请记得放弃它!