Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como enviar o resultado de uma query por e-mail no formato HTML utilizando o CLR (C#)

Visualizações: 3.419 views
Tempo de Leitura: 7 minutos

OlĂ¡ pessoal!
Bom dia.

Neste post vou demonstrar como exportar o resultado de uma query para uma string no formato HTML, de modo que vocĂª possa enviar o resultado da query por e-mail de uma forma que seja legal visualmente. Eu jĂ¡ havia feito algo parecido no post Como exportar dados de uma tabela do SQL Server para HTML, mas neste post vou trazer uma soluĂ§Ă£o ainda mais completa, personalizĂ¡vel e prĂ¡tica, utilizando o CLR.

Eu acabei optando por utilizar o CLR para essa soluĂ§Ă£o porque eu tenho preferĂªncia em trabalhar com funĂ§Ă£o ao invĂ©s de Stored Procedure quando preciso fazer formataĂ§Ă£o e conversĂ£o de strings, justamente por poder utilizar em SELECT, UPDATE, etc com mais facilidade. Como preciso utilizar query dinĂ¢mica para isso, nĂ£o dĂ¡ pra fazer com uma scalar-function no Transact-SQL, enquanto numa CLR Scalar-function isso Ă© possĂ­vel.

PrĂ©-requisitos para o uso da funĂ§Ă£o

Classe Utils.cs
Nessa classe, vou adicionar algumas funções genĂ©ricas, que utilizo em vĂ¡rias outras SP’s e rotinas do CLR e portanto, podem ser reaproveitadas.

Classe Servidor.cs
Nesta classe, utilizo configurações para armazenar as strings de conexĂ£o e mĂ©todos gerais para identificaĂ§Ă£o do servidor em que estou atualmente conectado utilizando o CLR.

Como exportar o resultado de uma query para HTML

Agora que os prĂ©-requisitos foram atendidos, vamos ao cĂ³digo-fonte da classe principal, que Ă© o motivo desse post.

fncExporta_Query_HTML.cs

O legal dessa funĂ§Ă£o, Ă© que o estilo do HTML gerado Ă© personalizĂ¡vel atravĂ©s de uma tabela no banco de dados, que Ă© a dbo.HTML_Layout_CSS. VocĂª pode criar vĂ¡rias formatações utilizando as regras CSS e utilizĂ¡-los nessa funĂ§Ă£o para gerar e-mails personalizados. Caso a tabela nĂ£o tenha nenhum registro, a funĂ§Ă£o jĂ¡ aplica um estilo padrĂ£o (mas vocĂª precisa ao menos criar essa tabela no banco de dados que o seu CLR irĂ¡ utilizar).

Segue script de criaĂ§Ă£o da tabela e alguns exemplos de como personalizar os estilos:

ParĂ¢metros de utilizaĂ§Ă£o da funĂ§Ă£o

Ds_Query: Query que serĂ¡ utilizada para consultar os resultados que serĂ£o exportados para HTML
Ds_Titulo: String que serĂ¡ utilizada como tĂ­tulo da tabela HTML gerada. Caso vocĂª nĂ£o queira utilizĂ¡-lo, basta informar a string vazia
Fl_Estilo: NĂºmero que indica o Id_Layout da tabela dbo.HTML_Layout_CSS que serĂ¡ utilizado para formatar o HTML gerado
Fl_Html_Completo: Flag booleana (0 ou 1) que indica se serĂ¡ gerado o HTML completo (html, body, etc) ou apenas o HTML da tabela

Exemplos de uso

Uso simples – Apenas gerando o HTML

Gravando o HTML gerado no disco

* O cĂ³digo da stpEscreve_Arquivo vocĂª pode encontrar no post SQL Server – Como listar, ler, escrever, copiar, excluir e mover arquivos com o CLR (C#).

Gravando o HTML de duas queries no disco

Gravando o HTML de trĂªs queries no disco, sem tĂ­tulo, utilizando outro estilo e enviando por e-mail

Caso vocĂª nĂ£o tenha configurado o Database Mail da sua instĂ¢ncia ou precise de ajuda para configurar, veja mais acessando o post SQL Server – Como ativar e configurar o Database mail para enviar e monitorar e-mails pelo banco de dados (sp_send_dbmail).

Espero que tenham gostado desse post e atĂ© o prĂ³ximo.