Olá pessoal,
estou com uma duvida como tratar no PL/SQL abaixo
onde se inserir 500 registros e der erro (insert into fornecedor )
vou para uma rotina erro só que ela tem um rollback
e os 500 registros serão desfeitos …
Será que tem algum jeito para dar roll back somente
neste registro que deu erro e deixando os restantes
para quando o contador = 1000 dar commit
Tenho que fazer commit de 1000 pois leio no cursor
1 milhao de registros …
Se alguem puder me ajudar agardeceria
abs
create or replace procedure test is
cursor c_princ is
select * from cliente;
r_princ c_princ%rowtype;
v_erro exception;
begin
open c_princ;
loop
begin
fetch c_princ into r_princ;
exit when c_princ%notfound;
-- insert produto
insert into produto values (r_princ.codigo);
raise v_erro;
-- insert transporte
insert into transporte values (r_princ.codigo);
raise v_erro;
-- insert forncecedor
insert into fornecedor values (r_princ.codigo);
raise v_erro;
if v_contador = 1000 then
commit;
v_contador :=0;
end if;
v_contador := v_contador +1;
exception
when v_erro then
rollback;
proc_log;
end;
end loop;
close c_princ;
end;