员工涨工资问题:
1 set serveroutput on 2 3 declare 4 --定义光标 5 cursor cemp is select empno,sal from emp order by sal; 6 pempno emp.empno%type;--员工号 7 psal emp.sal%type;--员工薪水 8 countEmp number:=0;--涨工资人数 9 salTotal number;--涨后的工资总额 10 11 begin 12 --工资总额的初始值 13 select sum(sal) into salTotal from emp; 14 --打开光标 15 open cemp; 16 loop --全程只有一次遍历 17 --退出条件1:工资总额>50000 18 exit when salTotal>50000; 19 --取一个员工涨工资 20 fetch cemp into pempno,psal; 21 --退出条件2:%notfound 22 exit when cemp%notfound; --加入已经给最后一个人涨了工资,剩下已无人可涨 23 24 --涨工资 25 if salTotal+psal*1.1 <50000 then --先假设如果这个人涨工资执行后是否满足条件 26 update emp set sal=sal*1.1 where empno=pempno; 27 --涨工资的人数加1 28 countEmp:=countEmp+1; 29 --涨后工资总额=张倩的工资总额+sal*0.1; 30 salTotal:=salTotal+psal*0.1; 31 else exit; 32 end if; 33 end loop; 34 35 --关闭光标 36 close cemp; 37 38 --由于前面有 update 语句 39 commit; 40 --打印结果 41 DBMS_OUTPUT.PUT_LINE('人数:'||countEmp||' 涨后的工资总额:'||salTotal); 42 end; 43 /