2011-02-02 53 views
1

我试图在Sql Server 2005中使用sp_send_dbmail发送一封电子邮件。我的身体文本和查询都是作为附件发送的。测试sp_send_dbmail查询的结果集?

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

在发送电子邮件之前,我是否有任何方式测试数据集的结果,并且如果没有结果,则不会将其作为附件发送。

我在想,也许在发送邮件之前运行查询,然后以这种方式测试结果。然后,我有一个if-else如下:

if @@rowcount >0 
    EXEC msdb.dbo.sp_send_dbmail @[email protected]_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 @[email protected]_list, 
     @subject = @subject, 
     @body = @body_text, @body_format = 'HTML' 

但我不认为这是解决问题的有效途径。

有什么建议吗? TIA!

回答

1

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

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

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