Inquiridor
Gerar arquivo txt com o resultado

Pergunta
-
<object height="0" id="2ac9c8ca-0858-9290-b989-5abb19aca78d" type="application/gas-events-abn" width="0"></object>Pessoal tenho uma pergunta tenho a seguinte procedure:
ALTER PROCEDURE [dbo].[VERIFICAMFD] AS BEGIN DECLARE @CAMPO VARCHAR(MAX); DECLARE @LGACHOU VARCHAR(1); SET @CAMPO = ''; SET @LGACHOU = 'N'; CREATE TABLE #TEMPARQUIVO( LINHA VARCHAR(MAX) ); bulk insert #TEMPARQUIVO from 'C:\TEMP\MFD.TXT' with ( CODEPAGE = 'ACP', rowterminator = '\n' ); DECLARE ANALISAARQUIVO01 CURSOR FOR select * from #TEMPARQUIVO OPEN ANALISAARQUIVO01 FETCH NEXT FROM ANALISAARQUIVO01 INTO @CAMPO WHILE @@FETCH_STATUS = 0 BEGIN IF (@CAMPO LIKE 'ITEM CÓDIGO DESCRIÇÃO QTD.UN.VL UNIT(R $) ST VL ITEM(R $)') BEGIN PRINT @CAMPO; SET @LGACHOU = 'Y'; END IF (@LGACHOU = 'Y') AND (@CAMPO <> 'ITEM CÓDIGO DESCRIÇÃO QTD.UN.VL UNIT(R $) ST VL ITEM(R $)') BEGIN PRINT @CAMPO; IF (@CAMPO LIKE ' ------------------') BEGIN SET @LGACHOU = 'N'; END END FETCH NEXT FROM ANALISAARQUIVO01 INTO @CAMPO; END CLOSE ANALISAARQUIVO01; DEALLOCATE ANALISAARQUIVO01; DROP TABLE #TEMPARQUIVO END /* Fim da Procedure */
Como eu faço para ao invês do print exibir o resultado na aba mensagens do sql imprimir em um arquivo txt? O que eu quero é gerar um arquivo txt com o comando print que estou usando é possível?
Todas as Respostas
-
-
-
ALTER PROCEDURE [dbo].[VERIFICAMFD] AS BEGIN DECLARE @CAMPO VARCHAR(MAX); DECLARE @LGACHOU VARCHAR(1); DECLARE @CMD2 VARCHAR(MAX) SET @CAMPO = ''; SET @LGACHOU = 'N'; CREATE TABLE #TEMPARQUIVO01( LINHA VARCHAR(MAX) ); CREATE TABLE #TEMPARQUIVO02( LINHA VARCHAR(MAX) ); bulk insert #TEMPARQUIVO01 from 'C:\TEMP\MFD.TXT' with ( CODEPAGE = 'ACP', rowterminator = '\n' ); DECLARE ANALISAARQUIVO01 CURSOR FOR select * from #TEMPARQUIVO01 OPEN ANALISAARQUIVO01 FETCH NEXT FROM ANALISAARQUIVO01 INTO @CAMPO WHILE @@FETCH_STATUS = 0 BEGIN IF (@CAMPO LIKE 'ITEM CÓDIGO DESCRIÇÃO QTD.UN.VL UNIT(R $) ST VL ITEM(R $)') BEGIN /*PRINT @CAMPO;*/ SET @LGACHOU = 'Y'; INSERT INTO #TEMPARQUIVO02 (LINHA) SELECT @CAMPO; END IF (@LGACHOU = 'Y') AND (@CAMPO <> 'ITEM CÓDIGO DESCRIÇÃO QTD.UN.VL UNIT(R $) ST VL ITEM(R $)') BEGIN /*PRINT @CAMPO;*/ INSERT INTO #TEMPARQUIVO02 (LINHA) SELECT @CAMPO; IF (@CAMPO LIKE ' ------------------') BEGIN SET @LGACHOU = 'N'; END END FETCH NEXT FROM ANALISAARQUIVO01 INTO @CAMPO; END CLOSE ANALISAARQUIVO01; DEALLOCATE ANALISAARQUIVO01; declare @sql varchar(MAX) select @sql = 'bcp [PHARMACY-PRUD]..#TEMPARQUIVO02 out c:\temp\TESTE.TXT -c -t, -T -S'+ @@servername exec master..xp_cmdshell @sql /*SELECT * FROM #TEMPARQUIVO02*/ DROP TABLE #TEMPARQUIVO01; DROP TABLE #TEMPARQUIVO02; END /* Fim da Procedure */ GO
Pessoal só que esta reportando o seguinte erro:
Mensagem 214, Nível 16, Estado 201, Procedimento xp_cmdshell, Linha 1
Procedure expects parameter 'command_string' of type 'varchar'.Alguem poderia me ajudar?
-
-
Fiz à alteração porém ainda retornou o seguinte erro:
SQLState = 01000, NativeError = 2701
Warning = [Microsoft][SQL Server Native Client 11.0][SQL Server]Nome do banco de dados 'PHARMACY-PRUD' ignorado, fazendo referência a objeto em tempdb.
SQLState = 37000, NativeError = 11525
Error = [Microsoft][SQL Server Native Client 11.0][SQL Server]Não foi possível determinar os metadados porque a instrução 'select * from [PHARMACY-PRUD]..#TEMPORIGINAL' usa uma tabela temporária.
NULLSerá que não é possível utilzar tabela temporária para exportar os dados? O nome do meu banco que estou usando se chama realmente [PHARMACY-PRUD] e a tabela estão corretos.
-
Eder,
Tente criar esta tabela temporária como uma temporário global passando o ## antes do nome da tabela, pois uma temporário local provavelmente não será possível.
Outro detalhe toda table temp é criada fisicamente no banco de dados TEMPDB ele existe somente logicamente no banco que você criou.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]