Cleber, para solucionar o problema mesmo sendo muitos registros e vc ir dando comite no mesmo. Faz o seguinte:
1- Crie um table(dbms_sql.Varchar2_Table ou dbms_sql.number_table depende o tipo da sua chave primaria)
2- Declare um contador (c number := 0;)
3- Conforme vc for inserindo os registros na tabela, vá alimentando a table( c := c + 1; tab1(c) := pk;).
4- Quando ocorrer o erro, execute um loop na table e delete os dados (
for dd in 1..tab1.count loop
delete tabela where pk = tab1(dd);
end loop;
)
Obs: não precisa inicializar esta table.
não esqueca de incrementar o contador.
Vlw?
Leonardo Litz