Write a Parameter Cursor program that promotes CLERK who earn more than 1000 to SR CLERK and increase the salary by 10%. Pass CLERK as a parameter to the Cursor. Use cursor with Update Clause.
My code:
x
declare
cursor c_promote(v_job varchar2) is
select empno from emp
where job=v_job and sal>1000
for update of job,sal nowait;
begin
for emp_record in c_promote('CLERK') loop
update emp set job='SR CLERK'
where empno=emp_record.empno;
update emp set sal=sal+sal*0.1
where empno=emp_record.empno;
end loop;
end;
My code does the work but I don’t find it correct so can someone suggest an alternative?
Advertisement
Answer
You can create a small procedure and pass v_job and update it in a single update statement rather than using cursor
Update emp set job='SR CLERK' , sal=sal+sal*0.1
where sal>1000 and job = v_job;