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 .
A regra é o seguinte tem que os 3 (tres insert) tem que
sido com sucesso se algum tiver erro dar rollback somente
nesse registro !!!
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;