none
Stored procedure Migração do Postgree para Sql Server RRS feed

  • Discussão Geral

  • Estou com muita dificultade para migrar as stored procedures do postgree para o Sql Server 2008.

    Tenho uma SP principal que chama outras SPs dinamicamente, veja abaixo:

     ... OPEN R1;
         
          FETCH  FROM R1
          INTO  @R1_cod_periodicidade, @R1_cod_parametroanalisepc, @R1_nome_funcao;
         

          WHILE @@FETCH_STATUS = 0
          BEGIN
                -- monta string com as SPs Dinamicamente
                set @chamafuncao = @R1_nome_funcao
                                        + ' '
                                        + cast(@idremessa as varchar) +', '
                                        + cast(@codpoder as varchar) +', '
                                        + cast(@codtipoug as varchar) +', '
                                        + cast(@codug as varchar) +', '
                                        + cast(@idportaria as varchar) +', '
                                        + cast(@opcquasem as varchar) +', '
                                        + cast(@codtipoanalise as varchar) +', '
                                        + cast(@codanalise as varchar) +', '
                                        + cast(@R1_cod_parametroanalisepc as varchar) +', '
                                        + cast(@idperiodo as varchar) +', '
                                        + cast(@idreferencia as varchar) +', '
                                        +''''', '
                                        + cast(@retificada as varchar);
                            
                Exec @Resultado = @chamafuncao;
               
                FETCH NEXT FROM R1
                INTO  @R1_cod_periodicidade, @R1_cod_parametroanalisepc, @R1_nome_funcao;

          END
          CLOSE R1;
          DEALLOCATE R1; ...

     

    Quando executo esta SP principal, da o erro:

    Msg 2812, Level 16, State 62, Procedure cria_analise_new_idremessa, Line 130
    Não foi possível encontrar o procedimento armazenado 'lrf_analise.exec_rreo_pc01_v01 34, 2, 46, 278360, 6, 6, 1, 542, 1, 654, 13, '', 0'.
    Msg 2812, Level 16, State 62, Procedure cria_analise_new_idremessa, Line 130
    Não foi possível encontrar o procedimento armazenado 'lrf_analise.exec_rreo_pc02_v01 34, 2, 46, 278360, 6, 6, 1, 542, 2, 654, 13, '', 0'.
    ...

    Se eu copio o texto na msg acima da SP que não foi encontrada e mando executar, funciona, então o nome e os parametros da SP estão corretos. Mas mesmo assim não localiza a SP.

    O mesmo acontece com SQLs de inserts dinamicos, que são montados em uma string.

    Alguem sabe como fazer? ou o que esta errado?

     

    sexta-feira, 19 de agosto de 2011 18:41

Todas as Respostas

  • Marcelo

    tente trocar o item abaixo:

    Exec @Resultado = @chamafuncao;

    Por

    Exec (@chamafuncao)

    ou

    EXECUTE sp_executesql @chamafuncao, @Resultado OUTPUT;
    
    

    neste último caso as váriaves devem ser nvarchar

     

     


    Att.
    Marcelo Fernandes

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

    sexta-feira, 19 de agosto de 2011 18:53
  • Funcionou com o
    Exec (@chamafuncao)


    Obrigado.

    sexta-feira, 19 de agosto de 2011 19:06