Повышайте клерка, если его зарплата больше 1000, и обновляйте его зарплату на 10%. - PullRequest
0 голосов
/ 01 августа 2020

Напишите программу Parameter Cursor, которая продвигает CLERK, зарабатывающих больше 1000, в SR CLERK и увеличивает зарплату на 10%. Передайте CLERK в качестве параметра курсору. Используйте курсор с пунктом обновления.

Мой код:

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;

Мой код работает, но я не считаю его правильным, поэтому может ли кто-нибудь предложить альтернативу?

1 Ответ

0 голосов
/ 01 августа 2020

Вы можете создать небольшую процедуру, передать v_job и обновить ее в одном операторе обновления вместо использования курсора

 Update emp set job='SR CLERK' , sal=sal+sal*0.1
    where sal>1000 and job = v_job;
...