1

我正在尝试使用 Sql Server 2005 发送电子邮件sp_send_dbmail。我将正文和查询作为附件发送。

但是,有时查询会返回一个空数据集。

在发送电子邮件之前,我有什么方法可以测试数据集的结果,如果没有结果,就不要将其作为附件发送。

我想在发送电子邮件之前运行查询,并以这种方式测试结果。然后,我有一个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'

但我认为这不是解决问题的有效方法。

有什么建议么?蒂亚!!

4

1 回答 1

1

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

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

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

于 2011-02-02T17:07:55.407 回答