¿Probar el conjunto de resultados de una consulta SP_SEND_DBMAIL?
-
28-10-2019 - |
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 !!
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!