--为员工涨工资,从最低工资涨起每人涨10%,但工资总额不能超过5万元,
--请计算涨工资的人数和涨工资后的工资总额,并输出涨工资人数及工资总额
--sql语句
--select empno,sal from emp order by sal;
--光标--循环--退出条件(1、工资总额大于5万;2、%notfound)
--变量:1、初始值 2、如何得到
--涨工资的人数:countEmp number:=0;
--涨后的工资总额:salTotal number;
--1、select sum(sal) into salTotal from emp;
--2、涨后的工资总额=涨前的工资总额+sal*0.1;
--select sum(sal) from emp;//得到初始的总工资
declare
--定义光标
cursor cemp is select empno,sal from emp order by sal;
pempno emp.empno%type;
psal emp.sal%type;
--涨工资的人数(初始值为0)
countEmp number=0;
--涨后的工资总额(注意初始值不为0)
salTotal number;
begin
--注意:我们能不操作数据库就不要操作数据库
--得到工资总额的初始值
select sum(sal) into salTotal from emp;
--打开光标
open cemp;
--loop循环
loop
--1、工资总额>5w
exit when salTotal>50000;
--取一个员工涨工资
fetch cemp into pempno,psal;
--2、%notfound
exit when cemp%notfound;
--涨工资
update emp set =sal*1.1 where empno=pempno;
--如果涨后的工资大于50000就直接退出
exit when salTotal>50000;
--人数+1
countEmp:=countEmp+1;
--2、涨后的工资总额=涨前的工资总额+sal*0.1
salTotal:=salTotal+psal*0.1;
end loop;
--关闭光标
close cemp;
--因为上面有update,所以要commit提交
commit;
--打印输出涨工资的人数和工资总额
dbms_output.put_line('涨工资的人数'||countEmp||',涨工资后的总额:'||salTotal);
end;
/
利用oracle的游标为员工涨工资,从最低工资涨起每人涨10%,但工资总额不能超过5万元
最新推荐文章于 2022-07-22 18:44:45 发布