utilização de cursor

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
marcoborgesrs
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 05 Mai 2015 2:47 pm

galera to meio destreinado, mas to apanhando num detalhe eu sei, alguém poderia me dizer o que ta de errado aqui embaixo?

Selecionar tudo

declare 
CURSOR c1 is 
      select cnae_code, mcc_code from sistema.cnae_mcc; 
BEGIN 
 open x in c1  ;
   loop 
   update sistema.company set mcc_code = x.mcc_code where cnae_code = x.cnae_code;

end loop;
commit;
END;
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

Tem varias coisas erradas.

* Não está sendo declarado o que é X.
* O open cursor está errado: OPEN CURSOR C1;
* ta faltando o FETCH c1 into x;
* Parece que tem um LOOP eterno ali.Tem que testar se o Cursor chegou no fim com %FOUND ou %NOTFOUND
* Faltando o CLOSE cursor.

O jeito mais fácil é usar FOR CURSOR, daí você evita todo tipo de complicação.

Selecionar tudo

begin
  for vcur in (select cnae_code, mcc_code from sistema.cnae_mcc); 
  loop 
    update sistema.company set mcc_code = vcur.mcc_code where cnae_code = vcur.cnae_code;
  end loop;
  commit;
end;
A não ser que você tenha uma razão específica pra usar OPEN CURSOR...
Responder
  • Informação
  • Quem está online

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