sql >> Databáze >  >> RDS >> Sqlserver

E-mailové výsledky dotazu jako HTML tabulka v SQL Server (T-SQL)

SQL Server Database Mail má uloženou proceduru nazvanou sp_send_dbmail které můžete použít k odesílání e-mailů ze serveru SQL.

Tuto uloženou proceduru můžete použít k odeslání výsledků dotazu ve formátu tabulky HTML.

Příklad

Zde je příklad k demonstraci.

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

V tomto případě deklaruji proměnnou s názvem @body_content a vložte do něj veškerý HTML kód. Také přidávám některé styly pomocí CSS, aby tabulka měla viditelné okraje, záhlaví atd. Tato proměnná se používá jako hodnota @body argument při odesílání e-mailu pomocí sp_send_dbmail postup.

Pokud nepotřebujete použít žádné styly, jednoduše odstraňte <style></style> tagy a vše mezi tím. V tomto případě můžete také odstranit class="GeneratedTable" bit ze skutečné tabulky.

Pokud chcete změnit styly, podívejte se na můj generátor tabulek na Quackit. Můžete jej použít ke generování stylů tabulek, poté můžete tyto styly zkopírovat/vložit do kódu, který vám přijde do e-mailů.

Kód T-SQL předán do CAST() Funkce je to, co vrací výsledky dotazu, každý ve svém vlastním řádku tabulky (<tr> prvek) a každý sloupec ve svém vlastním <td> prvek.

Nezapomeňte uvést @body_format = 'HTML' . To je to, co odesílá e-mail ve formátu HTML. Pokud toto vynecháte (nebo pokud jej nastavíte na TEXT ), příjemce místo vykresleného kódu obdrží nezpracovaný kód HTML.


  1. PostgreSQL:Proč se psql nemůže připojit k serveru?

  2. Co tento dotaz dělá pro vytvoření seznamu SQL Server odděleného čárkami?

  3. Jak zaokrouhlit (nahoru/dolů) v SQL Server – 5 užitečných tipů

  4. Efektivní monitorování replikace MySQL pomocí řídicích panelů SCUMM:Část 2