In a partial rollback, Oracle allows you to insert a savepoint in the transaction.
In this case, you may roll back the most recent changes in the transaction.
declare
v_errors_yn VARCHAR2(1) := 'N';
begin
update emp set sal = sal * 1.1
where deptNo = 10;
savepoint SaveDept10Update;
update emp set sal = sal * .9
where deptNo = 20;
select decode (count(*),0,'N','Y')
into v_errors_yn
from t_logError;
if v_errors_yn = 'Y' then
Rollback to SaveDept10Update;
end if;
end;
Names of savepoints follow the same naming rules and restrictions as variable names.