Testare il set di risultati di una query SP_SEND_DBMAIL?
-
28-10-2019 - |
Domanda
Sto cercando di inviare un'e -mail utilizzando sp_send_dbmail
In SQL Server 2005. Ho sia il testo del corpo che una query inviata come allegato.
A volte, tuttavia, la query restituirà un set di dati vuoto.
C'è un modo per te di testare i risultati del set di dati prima di inviare l'e -mail e se non ha risultati, non inviarlo come allegato.
Stavo pensando di eseguire la query prima di inviare l'e -mail e di testare i risultati in quel modo. Quindi, avrei un if-else
come segue:
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'
Ma non penso che questo sia un modo efficiente per risolvere il problema.
Eventuali suggerimenti? Tia !!
Soluzione
Va bene, non ho potuto provarlo sul mio set al lavoro poiché sembra che i nostri DBA abbiano bloccato l'accesso a questa procedura. Tuttavia, lo so sp_send_dbmail
Non utilizzerà le variabili locali nello script chiamante, ma potrebbe consentire di utilizzare una tabella di temperatura globale.
Questa non è un'ottima soluzione, ma potresti provare a inserire il risultato del risultato della query in ## tentato, quindi modificando la query su cui passi sp_send_dbmail
a select * from ##tempTable
Se ci sono> 0 righe.
Questo dovrebbe almeno essere meglio che eseguire la query originale 2x (se funziona). Ricorda di lasciarlo cadere quando hai finito!