none
Salvar dados que retornam em uma procedure RRS feed

  • Pergunta

  • Bom dia, tenho uma procedure que retorna um select com vários campos, como faço pra inserir estes campo em uma tabela temporária?

    Sei que tenho que criar uma tabela temporária com todos os campos do result da procedure e depois dar um insert executando a procedure, conforme código abaixo:

    create table #teste
    (
      cod_aluno                      INT                    NULL,
      Aluno                              VARCHAR(150)  NULL,
      nom_curso                      VARCHAR(150)  NULL,

    )

    insert into #teste 
    (
      cod_aluno
      ,Aluno
      ,nom_curso  
    )
    exec st_rel_definicao_curricular 11111, 0, 2014, 1,20065, 55, 1, 0, 0

    Quando executo dá o erro:

    Msg 8164, Level 16, State 1, Procedure st_rel_definicao_curricular, Line 133
    An INSERT EXEC statement cannot be nested.


    Vinicius Silva vinycius01@gmail.com



    • Editado vinycius01 quarta-feira, 18 de junho de 2014 14:52
    quarta-feira, 18 de junho de 2014 14:47

Respostas

  • Faz o seguinte comenta as linhas onde vc cria a tbl temp e tenta desse jeito

    insert into #teste execute st_rel_definicao_curricular 11111, 0, 2014, 1,20065, 55, 1, 0, 0

    Pra testar faça o select na tabela temp 

    select * from #teste

    drop table #teste


    Nome : Romy G. Moura Cargo: Analista Programador

    • Marcado como Resposta vinycius01 quarta-feira, 18 de junho de 2014 19:41
    quarta-feira, 18 de junho de 2014 17:15

Todas as Respostas

  • Para criar a tabela temporária vc precisa editar sua proc e no select retornado incluir into #tbl mas é preciso tomar cuidado ao utilizar tabelas temporárias, vc sempre deve dropar a tabela após sua utilização para evitar consumo de memória entre outros conceitos que vc deve abordar.

    Mas a grosso modo é assim que podemos iniciar uma tabela temp.

    select * into #tbl from tblExisting

     



    Nome : Romy G. Moura Cargo: Analista Programador

    quarta-feira, 18 de junho de 2014 14:54
  • Obrigado Romy, veja que incluí mais alguns itens no tópico postado...



    Vinicius Silva vinycius01@gmail.com

    quarta-feira, 18 de junho de 2014 16:34
  • Faz o seguinte comenta as linhas onde vc cria a tbl temp e tenta desse jeito

    insert into #teste execute st_rel_definicao_curricular 11111, 0, 2014, 1,20065, 55, 1, 0, 0

    Pra testar faça o select na tabela temp 

    select * from #teste

    drop table #teste


    Nome : Romy G. Moura Cargo: Analista Programador

    • Marcado como Resposta vinycius01 quarta-feira, 18 de junho de 2014 19:41
    quarta-feira, 18 de junho de 2014 17:15
  • deu certo obrigado.

    Vinicius Silva vinycius01@gmail.com

    quarta-feira, 18 de junho de 2014 19:41