`

为员工长工资。从最低工资调起每人长10%,但工资总额不能超过5万元,

 
阅读更多
/*
为员工长工资。从最低工资调起每人长10%,但工资总额不能超过5万元,
请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。

可能的SQL:
员工:  select empno,sal from emp order by sal;
长工资后的工资总额:1. 对sal进行累加: 新的工资总额=旧的工资 + sal*0.1;
                2. sum(sal): 查询数据库
练习: 工资不能超过5w
*/

declare
  --员工
  cursor cemp is select empno,sal from emp order by sal;
  pempno emp.empno%type;
  psal   emp.sal%type;
 
  --长工资的人数
  countEmp number := 0;
  --工资总额
  salTotal number;
begin

   --涨前工资总额
  select sum(sal) into salTotal from emp;

  open cemp;
  loop
    --工资总额>5w
    exit when salTotal > 50000;
    --取一个员工
    fetch cemp into pempno,psal;
    exit when cemp%notfound;
   
    --涨工资
    update emp set sal=sal*1.1 where empno=pempno;
    --人数
    countEmp := countEmp +1;
    --工资总额
    salTotal := salTotal + psal * 0.1;
  end loop;
  close cemp;
 
  commit;

  --输出
  dbms_output.put_line('长工资的人数:'|| countEmp);
  dbms_output.put_line('工资总额:'|| salTotal);

end;


















分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics