Тестирование набора результатов запроса sp_send_dbmail? - PullRequest
1 голос
/ 02 февраля 2011

Я пытаюсь отправить электронное письмо, используя 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'

Но я не думаю, что это эффективный способ решения проблемы.

Есть предложения?ТИА !!

1 Ответ

1 голос
/ 02 февраля 2011

Хорошо, я не смог проверить это на своем рабочем месте, так как кажется, что наши администраторы заблокировали доступ к этой процедуре.Однако я знаю, что sp_send_dbmail не будет использовать локальные переменные в вызывающем скрипте, но это может позволить вам использовать глобальную временную таблицу.

Это не очень хорошее решение, но вы можете попробовать вставить свой запросустановите результат в ## tempTable, затем измените передаваемый запрос на sp_send_dbmail на select * from ##tempTable, если есть> 0 строк.

Это должно быть как минимум лучше, чем запуск исходного запроса 2x (если он работает).Не забудьте бросить, когда закончите!

...