Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Risultati query e-mail come tabella HTML in SQL Server (T-SQL)

Posta database di SQL Server dispone di una procedura memorizzata denominata sp_send_dbmail che puoi utilizzare per inviare e-mail da SQL Server.

È possibile utilizzare questa procedura memorizzata per inviare risultati di query formattati in una tabella HTML.

Esempio

Ecco un esempio da dimostrare.

DECLARE @body_content nvarchar(max);
SET @body_content = N'
<style>
table.GeneratedTable {
  width: 100%;
  background-color: #ffffff;
  border-collapse: collapse;
  border-width: 2px;
  border-color: #ffcc00;
  border-style: solid;
  color: #000000;
}

table.GeneratedTable td, table.GeneratedTable th {
  border-width: 2px;
  border-color: #ffcc00;
  border-style: solid;
  padding: 3px;
}

table.GeneratedTable thead {
  background-color: #ffcc00;
}
</style>

<table class="GeneratedTable">
  <thead>
    <tr>
      <th>ArtistId</th>
      <th>ArtistName</th>
      <th>ActiveFrom</th>
    </tr>
  </thead>
  <tbody>' +
CAST(
        (SELECT td = ArtistId, '',
                td = ArtistName, '',
                td = ActiveFrom, ''
        FROM Music.dbo.Artists
        FOR XML PATH('tr'), TYPE   
        ) AS nvarchar(max)
    ) +
  N'</tbody>
</table>';

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = @body_content,
    @body_format = 'HTML',
    @subject = 'As discussed';

In questo caso, dichiaro una variabile chiamata @body_content e inserisci tutto il codice HTML al suo interno. Aggiungo anche alcuni stili usando CSS, in modo che la tabella abbia bordi visibili, intestazioni, ecc. Questa variabile è usata come valore di @body argomento durante l'invio dell'e-mail con sp_send_dbmail procedura.

Se non hai bisogno di alcuno stile da applicare, rimuovi semplicemente il <style></style> tag e tutto il resto. In questo caso, puoi anche rimuovere la class="GeneratedTable" bit dalla tabella effettiva.

Se vuoi cambiare gli stili, dai un'occhiata al mio generatore di tabelle su Quackit. Puoi usarlo per generare i tuoi stili di tabella, quindi puoi copiare/incollare quegli stili nel codice che va nelle tue e-mail.

Il codice T-SQL passato a CAST() function è ciò che restituisce i risultati della query, ciascuno nella propria riga della tabella (<tr> element) e ogni colonna all'interno del proprio <td> elemento.

Assicurati di includere @body_format = 'HTML' . Questo è ciò che invia l'e-mail in formato HTML. Se lo ometti (o se lo imposti su TEXT ), il destinatario riceverà il codice HTML grezzo, invece del codice renderizzato.