Cursor Oracle

Feras,

quero fazer uma procedure que a ideia e assim:

select * from tabela1
retorna 1 coluna com resultado

select * from tabela2
retorna 1 coluna com resultado

select * from tabela3
pega o resultado da tabela1 e tabela2 e faço a consulta na tabela3

o resultado da tabela3 me retorna 2 colunas

pego o resultado dessas 2 colunas e faço uma ultima consulta na tabela4

minha duvida e como e faço essa estrutura em uma procedure para que a proc me retone um cursor da tabela4 ?

Vê se isso lhe ajuda:


CREATE OR REPLACE PROCEDURE p_consuta_cursor AS 

v_campo_tabela1   tabela1.campo%TYPE;
v_campo_tabela2   tabela2.campo%TYPE;
v_campo_tabela3   tabela3.campo%TYPE;

BEGIN

  SELECT campo
  INTO   v_campo_tabela1 
  FROM  tabela1
  WHERE alguma_coisa = algo; 

  SELECT campo
  INTO    v_campo_tabela2 
  FROM  tabela2
  WHERE alguma_coisa = algo; 


  SELECT campo
  INTO    v_campo_tabela3 
  FROM  tabela3
  WHERE alguma_coisa = algo; 

  FOR v_cursor IN (
                           SELECT *
                           FROM   tabela4
                           WHERE campo1 = v_campo_tabela1 
                           AND     campo2 = v_campo_tabela2
                           AND    campo3 = v_campo_tabela3
                         )
                   LOOP
                         -- faz algo com o resultado
                         INSERT INTO tabela5(campo1, campo2)
                         VALUES (v_cursor.campo1, v_cursor.campo2);
                         -- 
                  END LOOP;
 


END p_consuta_cursor;

Qulquer coisa posta ai…

flw!