Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Resultados da consulta de e-mail como uma tabela HTML no SQL Server (T-SQL)


O Database Mail do SQL Server tem um procedimento armazenado chamado sp_send_dbmail que você pode usar para enviar emails do SQL Server.

Você pode usar esse procedimento armazenado para enviar resultados de consulta formatados em uma tabela HTML.

Exemplo


Aqui está um exemplo para demonstrar.
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';

Nesse caso, declaro uma variável chamada @body_content e coloque todo o código HTML nele. Eu também adiciono alguns estilos usando CSS, para que a tabela tenha bordas visíveis, cabeçalhos, etc. Esta variável é usada como o valor do @body argumento ao enviar o email com o sp_send_dbmail procedimento.

Se você não precisar que nenhum estilo seja aplicado, basta remover o <style></style> tags e tudo mais. Nesse caso, você também pode remover a class="GeneratedTable" bit da tabela real.

Se você quiser mudar os estilos, confira meu gerador de tabelas no Quackit. Você pode usá-lo para gerar seus estilos de tabela, então você pode copiar/colar esses estilos no código que vai para seus e-mails.

O código T-SQL passado para o CAST() função é o que retorna os resultados da consulta, cada um em sua própria linha da tabela (<tr> elemento) e cada coluna dentro de seu próprio <td> elemento.

Certifique-se de incluir @body_format = 'HTML' . Isto é o que envia o e-mail em formato HTML. Se omitir isto (ou se o definir para TEXT ), o destinatário receberá o código HTML bruto, em vez do código renderizado.