Cursor Duplo

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
borges_rsbr
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 12 Nov 2014 10:52 am

Senhores.
Tenho o CPF sem DAC, e necessito atualizar uma tabela, com base nele, já com o DAC.
os passos são esses:

Selecionar tudo

CURSOR c1   
IS
       select cpf_icg,id
       into  vCPF,vID
       from tkt_261064;

Selecionar tudo

CURSOR c2
IS      
      select  max (dev_cpf)
      into vCPF_DAC
       from devedor
      where dev_pro_cod = 'ICG'
        and dev_cpf like vCPF || '%'
        group by dev_cpf;
Ele precisa fazer um loop no cursor 1 para complementar o encontro do CPF com DAC no cursor 2.
Após isto, ele faz um update numa coluna da tabela do cursor 1.

Selecionar tudo

update tkt_261064 i set i.cpf_com_dac=vCPF_DAC where   i.cpf_icg= substr  ('vCPF_DAC',1,12);  
E para ser a unica linha, coloco o where.

Pergunto:
O que estou fazendo errado?

Selecionar tudo

create or replace procedure teste30 is
vCPF     varchar2(20);
vCPF_DAC varchar2(20);
vID      number(19);

CURSOR c1   
IS
       select cpf_icg,id
       into  vCPF,vID
       from tkt_261064;
CURSOR c2
IS      
      select  max (dev_cpf)
      into vCPF_DAC
       from devedor
      where dev_pro_cod = 'ICG'
        and dev_cpf like vCPF || '%'
        group by dev_cpf;
 BEGIN
     open c1;
        LOOP  
          fetch c1 into vCPF,vID;
        end loop;  
    FOR x IN c2;    

        loop
           update tkt_261064 i set i.cpf_com_dac=vCPF_DAC where   i.cpf_icg= substr  ('vCPF_DAC',1,12);  
   
    close c2;     
commit;
   end loop;
END;
borges_rsbr
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 12 Nov 2014 10:52 am

Selecionar tudo

create or replace procedure teste30 is
vCPF     varchar2(14);
vCPF_DAC varchar2(14);
vID      number(19);
CURSOR c1   
IS
       select cpf_icg,id
       into  vCPF,vID
       from tkt_261064;
CURSOR c2
IS  
      select   dev_cpf  
       from devedor
      where  dev_cpf like vCPF || '%';
BEGIN
        open c1;
     LOOP  
     FOR x IN c2
         loop
           vCPF_DAC:=x.dev_cpf;
     update tkt_261064 i set i.cpf_com_dac=vCPF_DAC where i.cpf_icg= substr  (vCPF_DAC,1,12);  
     end loop; 
  commit;
close c2; 
   end loop;
END;


Responder
  • Informação
  • Quem está online

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