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
  

Mensagemem Sex, 18 Nov 2005 3:25 pm

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?!
LC_JK
Localização: São Paulo

Mensagemem Sex, 18 Nov 2005 3:41 pm

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:
Código: Selecionar todos
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;
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Sex, 18 Nov 2005 4:05 pm

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?!
LC_JK
Localização: São Paulo


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para PL/SQL

    Quem está online

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