--从工资最低的员工开始,给员工涨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; /
看错了,哈哈,fetch看成下面了,楼主这个最优
推出条件还是要分开写,exit when cemp%notfound;还是要写在fetch后
你这么写就会出现15个人
把那个exit when 的条件改为楼主所给出的条件,就可以实现想要的结果了
exit when (salTotal + psal*0.1) > 50000;
exit when (salTotal + psal*1.1) > 50000;
请问这样设计之后,结果应该还是会超过5W吧?