Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

E-Mail-Abfrageergebnisse als HTML-Tabelle in SQL Server (T-SQL)

Die Datenbank-E-Mail von SQL Server verfügt über eine gespeicherte Prozedur namens sp_send_dbmail die Sie verwenden können, um E-Mails von SQL Server zu senden.

Sie können diese gespeicherte Prozedur verwenden, um in einer HTML-Tabelle formatierte Abfrageergebnisse zu senden.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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 diesem Fall deklariere ich eine Variable namens @body_content und fügen Sie den gesamten HTML-Code ein. Ich füge auch einige Stile mit CSS hinzu, sodass die Tabelle sichtbare Rahmen, Überschriften usw. hat. Diese Variable wird als Wert von @body verwendet Argument beim Senden der E-Mail mit dem sp_send_dbmail Verfahren.

Wenn keine Stile angewendet werden müssen, entfernen Sie einfach <style></style> Tags und alles dazwischen. In diesem Fall können Sie auch die class="GeneratedTable" entfernen Bit aus der aktuellen Tabelle.

Wenn Sie die Stile ändern möchten, sehen Sie sich meinen Tabellengenerator bei Quackit an. Sie können es verwenden, um Ihre Tabellenstile zu generieren, und Sie können diese Stile dann kopieren und in den Code einfügen, der in Ihre E-Mails geht.

Der an CAST() übergebene T-SQL-Code Funktion gibt die Abfrageergebnisse zurück, jedes in einer eigenen Tabellenzeile (<tr> -Element) und jede Spalte innerhalb ihres eigenen <td> Element.

Achten Sie darauf, @body_format = 'HTML' einzufügen . Dadurch wird die E-Mail im HTML-Format gesendet. Wenn Sie dies weglassen (oder wenn Sie es auf TEXT setzen ), erhält der Empfänger den rohen HTML-Code anstelle des gerenderten Codes.