sql >> Databasteknik >  >> RDS >> Sqlserver

Resultat från e-postfrågor som en HTML-tabell i SQL Server (T-SQL)

SQL Servers Databas Mail har en lagrad procedur som heter sp_send_dbmail som du kan använda för att skicka e-post från SQL Server.

Du kan använda denna lagrade procedur för att skicka frågeresultat formaterade till en HTML-tabell.

Exempel

Här är ett exempel att visa.

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';

I det här fallet deklarerar jag en variabel som heter @body_content och lägg in all HTML-kod i den. Jag lägger också till några stilar med hjälp av CSS, så att tabellen har synliga ramar, rubriker etc. Denna variabel används som värdet för @body argument när du skickar e-postmeddelandet med sp_send_dbmail förfarande.

Om du inte behöver använda några stilar, ta helt enkelt bort <style></style> taggar och allt däremellan. I det här fallet kan du också ta bort class="GeneratedTable" bit från den faktiska tabellen.

Om du vill ändra stilarna, kolla in min bordsgenerator på Quackit. Du kan använda den för att generera dina tabellstilar, sedan kan du kopiera/klistra in dessa stilar i koden som går in i dina e-postmeddelanden.

T-SQL-koden skickas till CAST() funktion är det som returnerar frågeresultaten, var och en i sin egen tabellrad (<tr> element), och varje kolumn inom sin egen <td> element.

Se till att inkludera @body_format = 'HTML' . Det är detta som skickar e-postmeddelandet i HTML-format. Om du utelämnar detta (eller om du ställer in det på TEXT ), kommer mottagaren att få den rå HTML-koden istället för den renderade koden.


  1. SQL Server Hög tillgänglighet:Installera SQL Server-failover-klustrad instans del 2

  2. Testar PostgreSQL-funktioner som konsumerar och returnerar refkursor

  3. TO_DATE() Funktion i Oracle

  4. Organisera ditt hemmakontor för ökad produktivitet