zoukankan      html  css  js  c++  java
  • 【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 /
  • 相关阅读:
    「SOL」开关(LOJ)
    「SOL」星际迷航(LOJ)
    「NOTE」概率生成函数
    「SOL」谢特(LOJ)
    「SOL」重建计划(BZOJ)
    「SOL」Tug of War(洛谷)
    「SOL」同余方程(LOJ)
    「SOL」Bad Cryptography(Codeforces)
    「SOL」小A与两位神仙(洛谷)
    「SOL」Social Distance(AtCoder)
  • 原文地址:https://www.cnblogs.com/CPU-Easy/p/10902286.html
Copyright © 2011-2022 走看看