小白有一个不解,关于update emp set sal = sal*1.1 where empno = pempno

来源:5-3 案例:员工涨工资问题

慕容1086703

2019-08-19 17:18

set serveroutput on;

declare

countEmp number := 0;--涨工资的人数

salTotal number;--工资总额

pempno emp.empno%type;--员工号

psal   emp.sal%type;--薪水

cursor cemp is select empno,sal from emp order by sal;--将集合升序


begin

  --将初始的工资总额相加,into到salTotal中

  select sum(sal) into salTotal from emp;

  open cemp;

       loop

         exit when salTotal > 50000;

              --如果工资总额没有超过5w,就开始取光标

              fetch cemp into pempno,psal;

              exit when cemp%notfound;

                   

                   --update emp set sal = sal*1.1 where empno = pempno;

                   --人数+1

                   countEmp := countEmp+1;

                   --涨后=涨前+工资*0.1

                   salTotal := salTotal + psal*0.1;--psal从上面继承110%sal

       end loop;

  close cemp;

  

  commit;

  

  dbms_output.put_line('涨工资的人数'||countEmp||'涨后的工资总额'||salTotal);

end;

/

小白刚来,求教

如果加粗的语句不用,好像也能求出人数和总额吧?

写回答 关注

1回答

  • qq_魴肆d青春_0
    2019-08-27 11:33:03

    是的,但是加了可以在后面继续执行,你不更新就一直是同样的数据做一百遍。

Oracle数据库开发必备利器之PL/SQL基础

Oracle数据库高级开发必备的基础,通过实例带你熟练掌握

75048 学习 · 208 问题

查看课程

相似问题