Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Резултати от заявка по имейл като HTML таблица в SQL Server (T-SQL)

Пощата на базата данни на SQL Server има съхранена процедура, наречена sp_send_dbmail които можете да използвате за изпращане на имейли от SQL Server.

Можете да използвате тази съхранена процедура, за да изпратите резултати от заявка, форматирани в HTML таблица.

Пример

Ето пример за демонстрация.

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

В този случай декларирам променлива, наречена @body_content и поставете целия HTML код в него. Също така добавям някои стилове с помощта на CSS, така че таблицата да има видими граници, заглавки и т.н. Тази променлива се използва като стойност на @body аргумент при изпращане на имейла с sp_send_dbmail процедура.

Ако не се нуждаете от прилагане на стилове, просто премахнете <style></style> тагове и всичко между тях. В този случай можете също да премахнете class="GeneratedTable" малко от действителната таблица.

Ако искате да промените стиловете, вижте генератора на таблици в Quackit. Можете да го използвате, за да генерирате стилове на таблицата си, след което можете да копирате/поставите тези стилове в кода, който влиза във вашите имейли.

T-SQL кодът се предава на CAST() функцията е това, което връща резултатите от заявката, всеки в собствен ред на таблица (<tr> елемент) и всяка колона в своя собствен <td> елемент.

Не забравяйте да включите @body_format = 'HTML' . Това е, което изпраща имейла в HTML формат. Ако пропуснете това (или ако го зададете на TEXT ), получателят ще получи необработения HTML код, вместо изобразения код.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте множество таблици в SQL Server с помощта на INNER JOIN

  2. Какви са плюсовете и минусите на запазването на SQL в Stored Procs срещу Code

  3. UNION резултатите от множество съхранени процедури

  4. Извършване на регулярни изрази (замяна) в SQL заявка

  5. Използване на изходни параметри на съхранената процедура в C#