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 !!

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top