2011-02-02 72 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(如果有效)更好。請記住在完成後放棄它!