Amigo,

Coloque o delete dentro de um bloco:

 

BEGIN

FOR x IN .... LOOP

                        BEGIN

                                    DELETE…

                        EXCEPTION

                        WHEN OTHERS THEN

                                    NULL;

                        END;

END LOOP;

 

COMMIT;

END;

 

  _____  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de João S. Araújo
Enviada em: sexta-feira, 18 de janeiro de 2008 07:22
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Exception em Loop de cursor

 

Bom dia galera,

Estou precisando de uma ajuda para tratar exceções que ocorram dentro de
loops de cursores.

Tentei simplificar o problema ao máximo no exemplo abaixo, porém sem mudar o
escopo do que preciso.

Se alguém puder me ajudar, desde já agradeço.

begin 


for x in (select id_pai from pai) loop


delete from pai where id_pai = x.id_pai; -- nesse ponto uma exceção
qualquer é gerada, no exemplo o id_pai é FK na tabela filho
exception when others then null; -- preciso que a exceção ignore
a exclusão da linha corrente do cursor,

-- porém preciso que o cursor
não seja abortado e continue a processar

end loop; -- a exclusão das demais linhas
que não sejam FK na tabela filho.

Commit;

end; 

Obrigado!

João

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a