--从工资最低的员工开始,给员工涨10%的工资,但工资总额不能超过5W元,并输出工资总额与涨工资员工人数
declare
--定义光标
cursor cemp is select empno,sal from emp order by sal;
pempno emp.empno%type; --员工工号
psal emp.sal%type; --员工工资
--涨工资员工人数
pnum number :=0;
--当前工资总额
psumsal number;
begin
--当前工资总额
select sum(sal) into psumsal from emp;
--打开光标
open cemp;
loop
--取出一条数据
fetch cemp into pempno,psal;
--结束条件:cemp已空 或 工资总额(当前工资总额+当前需涨金额)超过5W
exit when cemp%notfound or (psumsal+ psal*0.1)>50000;
--更新数据库,涨10%工资
update emp set sal=sal*1.1 where empno=pempno;
--更新涨工资员工人数
pnum := pnum+1;
--更新当前工资总额
psumsal := psumsal+psal*0.1;
end loop;
--关闭光标
close cemp;
--提交更改
commit;
--输出结果
dbms_output.put_line('工资总额:'||psumsal);
dbms_output.put_line('涨工资员工人数:'||pnum);
end;
/