none
Retornar Procedure em arquivo txt RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Gostaria de saber como faço para gravar o retorno de uma stored procedure em um arquivo .txt.

    Abraço a todos.

    Marcelo Moraes.

    terça-feira, 19 de dezembro de 2006 16:02

Todas as Respostas

  • vc. pode usar um DTS ou bcp para isso. veja exemplos de BCP em:

    http://www.forumweb.com.br/artigos/artigos.php?action=file&id=251

     

    Abs;

     

     

    terça-feira, 19 de dezembro de 2006 16:20
  • Marcelo,

    Se você estive utilizando o Query Analyzer ou o Management Studio, poder selecionar o botão Result in file, quando seu stored procedure for executada o resultado será gerado um arquivo, faltando somente informar o nome do arquivo.

    Outra possibilidade e utilizar o OSQL se você estiver trabalhando com o SQL Server 2000, na caso do SQL Server 2005 utilize o SQLCMD, utilizando a opção -o.

    Veja o exemplo:

    SQLCMD -SSEUSERVIDOR -USEUUSUARIO -P1223 -o "C:\Resultado.txt"

    Select * from Produto

    Go

    terça-feira, 19 de dezembro de 2006 16:21
  • A procedure é executada através de um job.

    Não estou conseguindo alterar essa procedure pra gravar em arquivo.

    Não entendi como aplicar o BCP. O exemplo do query analyzer não resolve meu problema justamente porque a procedure é executada por um job.

    Abraços.

    Marcelo Moraes.

    terça-feira, 19 de dezembro de 2006 16:36
  • como vc. nao pode alterar a proc vc. pode fazer assim

      create table tabela (campos que a proc retorna )

      insert into tabela (campos) exec nome_proc

      depois

      xp_cmdshell 'bcp .... ' -- coloque aqui o comando bcp para gerar o texto. como nos exemplos.

     

    qualquer coisa retorne.

    terça-feira, 19 de dezembro de 2006 16:45
  • Sem chance.

    Não consegui fazer.

    Abraços.

    terça-feira, 19 de dezembro de 2006 17:03
  • veja o exemplo

     

    drop table exemplo
    Create Table Exemplo (Campo1 int)

    insert into exemplo (campo1) Values (1)
    insert into exemplo (campo1) Values (2)
    insert into exemplo (campo1) Values (3)
    insert into exemplo (campo1) Values (4)
    insert into exemplo (campo1) Values (5)

    Create Proc ProcedureExemplo @Parametro int
    As
    set nocount on
    Select * From exemplo where campo1 >= @Parametro


    ---- comeco da exportacao

    Create Table TxtExportaDados (campo1 int) -- tem que ser igual ao retorno da proc

    insert into TxtExportaDados (campo1) Exec ProcedureExemplo 4 -- executando a procedure

    Declare @ComandoBcp Varchar(1000)

    Set @ComandoBcp = 'Bcp "Select * From seu_banco_de_dados.dbo.TxtExportaDados" queryout "C:\Lista.Txt" -SNome_Servidor -c -t; -T'

    exec master..xp_cmdshell @ComandoBcp

     

    Abs;

    terça-feira, 19 de dezembro de 2006 17:56
  • Marcelo Colla - MVP disse:

    veja o exemplo

     

    drop table exemplo
    Create Table Exemplo (Campo1 int)

    insert into exemplo (campo1) Values (1)
    insert into exemplo (campo1) Values (2)
    insert into exemplo (campo1) Values (3)
    insert into exemplo (campo1) Values (4)
    insert into exemplo (campo1) Values (5)

    Create Proc ProcedureExemplo @Parametro int
    As
    set nocount on
    Select * From exemplo where campo1 >= @Parametro


    ---- comeco da exportacao

    Create Table TxtExportaDados (campo1 int) -- tem que ser igual ao retorno da proc

    insert into TxtExportaDados (campo1) Exec ProcedureExemplo 4 -- executando a procedure

    Declare @ComandoBcp Varchar(1000)

    Set @ComandoBcp = 'Bcp "Select * From seu_banco_de_dados.dbo.TxtExportaDados" queryout "C:\Lista.Txt" -SNome_Servidor -c -t; -T'

    exec master..xp_cmdshell @ComandoBcp

     

    Abs;



    Parabéns Marcelo, já me ajudou e assim pude execurar esse exemplo sem problemas.
    sábado, 31 de janeiro de 2009 15:10