Respondido Exportar tabela temporaria de uma Procedure

  • segunda-feira, 5 de março de 2012 17:57
     
     

    Tenho uma Procedure que faz N loops, para exportaçao de toda ficha financeira dos colaboradores que possuo na empresa, desde 1991, ou seja, um grande loop, onde gravo cada final de loop em uma tabela temporaria, onde o que eu preciso é que para cada periodo que é o primeiro e principal laço dos loops que no final apos gravar na tabela temporaria, que fosse exportado isso tudo para um arquivo txt.

    hoje para apresentar essas informaçoes simplesmente no final dou um select * from #tmp;

    Se alguem souber como faço para exportar esse select

    Obrigado


Todas as Respostas

  • segunda-feira, 5 de março de 2012 18:42
    Moderador
     
     Respondido

    Josivan

    este artigo deve ajudar

    http://msdn.microsoft.com/pt-br/library/ms191503.aspx


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

  • segunda-feira, 5 de março de 2012 19:05
     
      Contém Código

    Marcelo,

    Vi o exemplo e fiz conforme estava, porém duas situações:

    Usando o USE tempdb; me informa esse erro:
    Uma instrução de banco de dados USE não é permitido em um procedimento, uma função ou um gatilho

    tirando o 

    USE tempdb;
    GO
     --resto do sql
     
    GO

    e deixando somente:

    BULK INSERT #tmp_campos
    		FROM 'C:\PersonalData.Dat'
    			WITH (
    			DATAFILETYPE = 'char',
    			FIELDTERMINATOR = ',',
    			KEEPNULLS
    		);

    expressa esse erro:

    Não é possível carregar em massa. O arquivo "C:\PersonalData.Dat" não existe.

    Sendo que crio .Dat ou .Txt no C:\ antes de executar a procedure e mesmo assim acontece esse erro.

    Alguma alternativa ou algo que fiz errado?

    Abraços e Obrigado!



  • terça-feira, 6 de março de 2012 11:46
     
     Respondido

    Josivan,

    Minha sugestão seria utilizar o comando bcp para realizar esta exportação!

    Além disso, os exemplos que o Marcelo sugeriu mostram como você pode realizar este tipo de procedimento de forma direta, mas acredito que você esta montando uma nova estrutura de acordo com suas necessidades.

    Em relação ao comando Use realmente ele não pode ser utilizando dentro de uma Stored Procedure, Function ou Trigger, pois são objetos pertencentes a um contexto de banco de dados.

    Outra possibilidade muito similar ao comando BCP seria utilizar o comando SQLCMD.


    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]