2011-02-02 20 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(動作している場合)を実行するよりも優れているはずです。あなたが完了したらそれをドロップすることを忘れないでください!

関連する問題