Pregunta

Estoy tratando de enviar un correo electrónico usando sp_send_dbmail en SQL Server 2005. Tengo tanto texto del cuerpo como una consulta que se envía como un archivo adjunto.

A veces, sin embargo, la consulta devolverá un conjunto de datos vacío.

¿Hay alguna forma de probar los resultados del conjunto de datos antes de enviar el correo electrónico, y si no tiene resultados, no lo envíe como un archivo adjunto?

Estaba pensando en ejecutar la consulta antes de enviar el correo electrónico y probar los resultados de esa manera. Entonces, tendría un if-else como sigue:

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'

Pero no creo que esta sea una forma eficiente de resolver el problema.

¿Alguna sugerencia? Tia !!

¿Fue útil?

Solución

Muy bien, no pude probar esto en mi configuración en el trabajo, ya que parece que nuestros DBA han bloqueado el acceso a este procedimiento. Sin embargo, sé que sp_send_dbmail No utilizará variables locales en el script de llamadas, pero podría permitirle usar una tabla de temperatura global.

Esta no es una gran solución, pero puede intentar insertar el resultado de su consulta establecido en ## Tentable, luego cambiar la consulta a la que pasa a sp_send_dbmail a select * from ##tempTable Si hay> 0 filas.

Eso debería al menos ser mejor que ejecutar la consulta original 2x (si funciona). ¡Recuerda dejarlo cuando hayas terminado!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top