Skip to content
Advertisement

how to rollback tran when error occur in oracle

i try to solve 2 requests below but i only code for the first one,, can any one help to solve the second one

  1. Write SQL statements using cursor to update salary of all employees base on update conditionals
  2. Make sure all update records have been updated completely. The database transaction will be rolled back if any update failure).
declare
cur_empno int;
cursor salary_increment  IS
select employee.empno from EMPLOYEE 
where emplevel in(
    select EmpNo from EMP_SKILL
    group by EmpNo
    having count(*)>1
);
begin
open salary_increment;
loop
fetch salary_increment into cur_empno;
exit when salary_increment%notfound;
update EMPLOYEE set Salary=Salary+300000 
where EmpNo=cur_empno and empLevel=2 and add_months(startdate,24)<=current_date;
update EMPLOYEE set Salary=Salary+500000 
where EmpNo=cur_empno and empLevel=3 and add_months(startdate,36)<=current_date;
end loop;
close salary_increment;
end;

Advertisement

Answer

Try this.

declare
cur_empno int;
cursor salary_increment  IS
select employee.empno from EMPLOYEE 
where emplevel in(
    select EmpNo from EMP_SKILL
    group by EmpNo
    having count(*)>1
);
begin
open salary_increment;
loop
fetch salary_increment into cur_empno;
exit when salary_increment%notfound;
update EMPLOYEE set Salary=Salary+300000 
where EmpNo=cur_empno and empLevel=2 and add_months(startdate,24)<=current_date;
update EMPLOYEE set Salary=Salary+500000 
where EmpNo=cur_empno and empLevel=3 and add_months(startdate,36)<=current_date;
end loop;
close salary_increment;

EXCEPTION
    WHEN OTHERS THEN
    ROLLBACK;

COMMIT;
END;
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement