Select cursor_a.campo1 from cursor_a.table

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
thrrent
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Dom, 29 Jan 2012 5:28 pm
Localização: Rio de Janeiro

Pessoal,

Estou usando cursores aninhados, no último cursor aninhado preciso executar um comando select, com os dados do cursor anterior, que retorna o nome da tabela que preciso usar na clausula FROM que é retornado do outro cursor, alguém sabe se isso funciona. Segue exemplo do código, bem resumido. Já pesquisei esse assunto em vários sites de Oracle, mas ainda não encontrei, encontrei apenas para SQL Server.

Se alguém souber uma forma de fazer essa ideia funcionar, Valeu! :)

Selecionar tudo

declare
v_texto varchar2(100):='texto qualquer';
begin

      for cursor_a in(
   
select  
   campo1,
   table_name

   from table

   where campo1 = 'alguma coisa'

      )loop

          for cursor_b in(

          [b]select cursor_a.campo1
           from cursor_a.table_name
           where cursor_a.campo1 like '%||v_texto||%' [/b]
                       
          )loop
             dbms_output.put_line('Resultado: '||cursor_a.table_name||' Dado: '||cursor_a.campo1);          
          end loop; 
end loop;

end;

DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Pelo que entendi, no seu cursor mais externo, você tem o nome das tabelas e dos campos.
Aí no cursor interno você quer fazer um select pelos nome dos campos e tabelas do cursor externo.
É isso???

Bem, você precisará fazer SQL DINAMICO.
Monta o sql numa "string" e executa-o.
Mas se realmente você precisar desse cursor interno ser deste SQL DINAMICO vai precisar utilizar REF_CURSOR e associar os campos e tipos adequados dos campos de suas tabelas para "Fetch"(iar) na variável que guarda as informações do cursor.
thrrent
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Dom, 29 Jan 2012 5:28 pm
Localização: Rio de Janeiro

Entendi, vou testar e já dou um retorno, valeu!
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Responder
  • Informação
  • Quem está online

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