Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyniki zapytań e-mail jako tabela HTML w SQL Server (T-SQL)

Poczta bazy danych SQL Server ma procedurę składowaną o nazwie sp_send_dbmail którego możesz używać do wysyłania wiadomości e-mail z serwera SQL.

Możesz użyć tej zapisanej procedury, aby wysłać wyniki zapytania sformatowane do tabeli HTML.

Przykład

Oto przykład do zademonstrowania.

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

W tym przypadku deklaruję zmienną o nazwie @body_content i umieść w nim cały kod HTML. Dodaję też kilka stylów za pomocą CSS, aby tabela miała widoczne obramowania, nagłówki itp. Ta zmienna jest używana jako wartość @body argument podczas wysyłania wiadomości e-mail z sp_send_dbmail procedura.

Jeśli nie potrzebujesz żadnych stylów do zastosowania, po prostu usuń <style></style> tagi i wszystko pomiędzy. W takim przypadku możesz również usunąć class="GeneratedTable" nieco z rzeczywistej tabeli.

Jeśli chcesz zmienić style, sprawdź mój generator stołów na Quackit. Możesz go użyć do wygenerowania stylów tabeli, a następnie skopiować/wkleić te style do kodu, który trafia do Twoich e-maili.

Kod T-SQL przekazany do CAST() funkcja zwraca wyniki zapytania, każdy w osobnym wierszu tabeli (<tr> element), a każda kolumna w jej własnym <td> element.

Pamiętaj, aby dołączyć @body_format = 'HTML' . To właśnie wysyła wiadomość e-mail w formacie HTML. Jeśli to pominiesz (lub jeśli ustawisz go na TEXT ), odbiorca otrzyma surowy kod HTML zamiast wyrenderowanego kodu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj wartość klucza podstawowego za pomocą struktury encji

  2. Zmienne uwzględniające wielkość liter w SQL Server

  3. Optymalny sposób łączenia/agregowania ciągów

  4. Przekaż zmienną do wyzwalacza

  5. Utwórz profil poczty bazy danych w programie SQL Server (T-SQL)