Prezados,
Boa tarde.
Neste post irei demonstrar como exportar os dados de uma tabela do SQL Server para um arquivo HTML ou uma variável do tipo VARCHAR, onde serão apresentadas duas Procedures bem parecidas, onde uma gera o HTML em forma de arquivo físico no disco e a outra grava o HTML gerado em uma variável de OUTPUT.
Também fiz um post sobre essa mesma funcionalidade, mas utilizando o CLR, que permite exportar uma query para HTML de forma rápida e mais prática que utilizando OLE Automation. Se quiser saber mais, acesse o post SQL Server – Como enviar o resultado de uma query por e-mail no formato HTML utilizando o CLR (C#).
Pré-Requisitos
Caso você precise utilizar apenas a procedure em que o HTML é retornado como variável OUTPUT, pode pular os pré-requisitos.
Para a procedure onde é gerado um arquivo físico no disco, preciso que vocês tenham criado a procedure stpEscreve_Arquivo_FSO, que eu falei sobre ela no post Operações com arquivos utilizando OLE Automation no SQL Server.
Vale lembrar que para a utilização de OLE Automation, é necessário que esse recurso esteja habilitado no servidor. Caso não esteja habilitado, veja no post Habilitando OLE Automation via T-SQL no SQL Server como fazer isso.
Criando uma massa de dados para os testes
1 2 3 4 |
IF (OBJECT_ID('tempdb..##Teste') IS NOT NULL) DROP TABLE ##Teste SELECT * INTO ##Teste FROM master.INFORMATION_SCHEMA.TABLES |
Retornando o HTML como variável OUTPUT
Essa funcionalidade deve ser utilizada quando você precisa tratar ou realizar alguma ação com o HTML gerado, como enviar um e-mail com os dados dessa tabela, por exemplo.
Usage example:
1 2 3 4 5 6 7 |
DECLARE @HTML VARCHAR(MAX) EXEC dbo.stpExporta_Tabela_HTML_Output @Ds_Tabela = '##Teste', -- varchar(max) @Ds_Saida = @HTML OUT -- varchar(max) PRINT @HTML |
Exemplo de utilização com texto centralizado e ordenando os resultados pela coluna TABLE_NAME:
1 2 3 4 5 6 7 8 9 |
DECLARE @HTML VARCHAR(MAX) EXEC dbo.stpExporta_Tabela_HTML_Output @Ds_Tabela = '##Teste', -- varchar(max) @Ds_Saida = @HTML OUT, -- varchar(max) @Ds_Alinhamento = 'center', @Ds_OrderBy = 'TABLE_NAME' PRINT @HTML |
Código-fonte
Visualizar código-fonte
Exportando o HTML para Arquivo
Essa funcionalidade deve ser utilizada quando você precisa gerar um arquivo físico no disco ou na rede contendo o conteúdo de uma tabela no formato HTML.
Usage example:
1 2 3 |
EXEC dbo.stpExporta_Tabela_HTML @Ds_Tabela = '##Teste', -- varchar(max) @Ds_Arquivo_Saida = 'C:\Teste.html' -- varchar(max) |
Código-fonte
Visualizar código-fonte
É isso aí, pessoal.
Até a próxima!
Já localizei em um outro post
Opa, maravilha!
Olá Dirceu, não localizei o código da procedure ‘dbo.stpEscreve_Arquivo_FSO’ que consta
Oi Jorge,
Tudo certo?
Primeiramente, obrigado pela visita! O código dessa SP fica no post https://www.dirceuresende.com/blog/operacoes-com-arquivos-utilizando-ole-automation-no-sql-server/, conforme expliquei ali na parte de “Pré-Requisitos”, bem no começo do post 🙂
Qualquer dúvida, é só falar!
Abraço!
Dirceu, bom dia. Vem acompanhando o seu blog, parabéns excelentes dicas.
Me tira uma dúvida, eu estou configurando uma query para ser enviado via email, já tenho tudo configurado, eu consigo ter mais de uma tabela no envio do email?
Após o N” eu adicionei um + para adicionar mais uma tabela:
N” +
N’Faturamento Detalhado: DUTRA’ +
N” +
Estou te perguntando isso, pois o email está sendo recebido em branco.
Obrigado.
Consegui resolver rs.
Adicionei várias tabelas, e na hora do print coloquei como isnull também.
Isso aí Thiago! Você também pode fazer isso criando 2 variáveis: Uma vai receber o resultado do EXEC para cada tabela e somar o resultado na outra variável ao final, utilizando o ISNULL().