PROCEDURE P_BONUS
IS
cursor c_bonus is
SELECT is_emp_bonus.last_name, is_emp_bonus.salary,
is_emp_bonus.bonus
FROM is_emp_bonus
order by is_emp_bonus.salary DESC
for update of bonus;
type bon_rec_record_type is record
(last_name is_emp_bonus.last_name%TYPE,
salary is_emp_bonus.salary%TYPE,
bonus is_emp_bonus.bonus%TYPE);
bon_rec bon_rec_record_type;
v_bonus number(30,2);
BEGIN
for bon_rec in c_bonus
loop
v_bonus := 0.2;
if bon_rec.salary>5000 then
v_bonus := 0.05;
end if;
update is_emp_bonus
set bonus = bon_rec.salary*v_bonus
where current of c_bonus;
end loop;
END; -- Procedure