sql >> Base de Datos >  >> RDS >> Sqlserver

Resultados de la consulta por correo electrónico como una tabla HTML en SQL Server (T-SQL)

El correo de base de datos de SQL Server tiene un procedimiento almacenado llamado sp_send_dbmail que puede usar para enviar correos electrónicos desde SQL Server.

Puede usar este procedimiento almacenado para enviar resultados de consultas formateados en una tabla HTML.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

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

En este caso, declaro una variable llamada @body_content y poner todo el código HTML en él. También agrego algunos estilos usando CSS, para que la tabla tenga bordes visibles, encabezados, etc. Esta variable se usa como el valor de @body argumento al enviar el correo electrónico con el sp_send_dbmail procedimiento.

Si no necesita que se aplique ningún estilo, simplemente elimine el <style></style> etiquetas y todo lo demás. En este caso, también puede eliminar class="GeneratedTable" bit de la tabla real.

Si desea cambiar los estilos, consulte mi generador de tablas en Quackit. Puede usarlo para generar sus estilos de tabla, luego puede copiar/pegar esos estilos en el código que se incluye en sus correos electrónicos.

El código T-SQL pasado al CAST() La función es lo que devuelve los resultados de la consulta, cada uno en su propia fila de la tabla (<tr> elemento), y cada columna dentro de su propio <td> elemento.

Asegúrese de incluir @body_format = 'HTML' . Esto es lo que envía el correo electrónico en formato HTML. Si omite esto (o si lo establece en TEXT ), el destinatario recibirá el código HTML sin procesar, en lugar del código renderizado.