【PL/SQL】学习笔记 (16)案例二:员工涨工资问题

员工涨工资问题:

 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 /
原文地址:https://www.cnblogs.com/CPU-Easy/p/10902286.html