Duvida urgente TYPE PIPELINED.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Boa tarde pessoal.

Estou desenvolvendo uma procedure com chamada de várias funções. Como faço para trazer estas informações da procedure com retorno dentro de um TYPE PIPELINED. Esta informação tipo consulta ,sera uma consulta em front.
Estou enviando um simples exemplo.
Agradeço pela ajuda.

--Procedure

Selecionar tudo

create or replace NONEDITIONABLE PROCEDURE proc_teste ( p_ISS     IN   number,
                                                        p_COFINS  IN   number,
                                                        P_IR      IN  number,
                                                        P_IMPOSTO IN   number,
                                                        P_TAXA    IN   number  ) AS                            
                                        
  v_num1  NUMBER  := 0;     
  v_num2   NUMBER := 0;
  v_num3   NUMBER := 0;

BEGIN

  --FUNCTION 1
  v_num1 := fn_ISS( p_iss , p_COFINS );

  --FUNCTION 2
  v_num2 := fn_ir( P_IR, P_IMPOSTO);

  --FUNCTION 3
  v_num3 := fn_taxa( P_TAXA, P_IMPOSTO, p_ISS );


 
END;



PIPELINED

Selecionar tudo

create or replace  procedure RETORNO

  FUNCTION BUSCA_RETORNO( v_num1,
                          v_num2,
                          v_num3  ) 

 RETURN RETORNO_TYPES.t_simulador_tab PIPELINED

  IS

    v_row       t_simulador_row;

    v_tab       t_simulador_tab := t_simulador_tab();

   TYPE t_row_inicial IS RECORD( v_num1,
                                 v_num2,
                                 v_num3); 

    v_row_inicial t_row_inicial;

    TYPE t_inicial IS TABLE OF t_row_inicial;

    v_tab_inicial t_inicial := t_inicial();


  BEGIN


      FOR i IN v_tab_inicial.first..v_tab_inicial.last LOOP


          --Agora alimentamos o v_row a ser retornado

          v_row.v_num1 := v_tab_inicial(i).v_num1;
          v_row.v_num2 := v_tab_inicial(i).v_num2;
          v_row.v_num3 := v_tab_inicial(i).v_num3;
          
        PIPE ROW(v_row);

      END LOOP;

  END BUSCA_RETORNO;
END;
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Consegui resolver . Deu para fazer como eu esperava. Vou postar o código aqui.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes