Variavel do tipo %ROWTYPE em um join de 2 ou mais tabelas

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
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

Boa tarde galera,

Gostaria de saber se alguém saberia resolver um problema.

Por exemplo, se eu tenho um select que faz um join em 3 tabelas, e eu quero declarar uma variavel do tipo %ROWTYPE para que eu jogue o resultado do select. Como eu posso fazer?!

Com uma tabela eu sei que é possivel, mas e quando tem mais de 1 tabela?!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Veja se esse exemplo não te ajuda:
http://glufke.net/oracle/about51.html

Acabei de criar um igual usando um JOIN no cursor. Funciona beleza !

Veja o meu exemplo:

Selecionar tudo

DECLARE

  --declara o cursor desejado
  CURSOR cur_emp
  IS
  select cim_processos.nro_proc,
       cim_processos.seq_proc,
       cim_processos.ncm,
       cim_faturas.vlr_ini_me,
       cim_faturas.vlr_ini_mn
  from cim_processos x,
       cim_faturas   y
 where cim_processos.nro_proc               = y.proc_nro_proc
       and x.seq_proc                       = Y.proc_seq_proc
       and x.regs_codigo_regiao_do_sistema  = Y.pregs_codigo_regiao_do_sistema
       and x.regemgr_sigla_empresa_do_grupo = Y.regemgr_sigla_empresa_do_grupo
       and x.uneg_plta_sigla                = Y.proc_uneg_plta_sigla
       and x.uneg_negc_empg_sigla           = Y.proc_uneg_negc_empg_sigla
       and x.uneg_negc_sigla                = Y.proc_uneg_negc_sigla;


  --declara o array que conterá a linha toda
  rec_emp cur_emp%ROWTYPE;

BEGIN
  --Pega a linha desejada e grava no array
  OPEN cur_emp;
  FETCH cur_emp INTO rec_emp;
  CLOSE cur_emp;

  DBMS_OUTPUT.PUT_LINE( rec_emp.VLR_INI_ME );
END; 
LC_JK
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Ter, 24 Ago 2004 2:02 pm
Localização: São Paulo
Contato:

Ah.. desculpe.... faltou eu falar um detalhe!!

Mas e se esse select estivesse dentro de um sql dinamico?! ou seja, se esse sql estive sendo montado dentro de um execute immediate?!
Responder
  • Informação
  • Quem está online

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