问答详情
源自:5-3 案例:员工涨工资问题

关于给员工涨工资的那个老师没有写完整的案例

有没有老师写的那个给员工涨工资的完全代码

提问者:慕粉2310089285 2017-10-30 19:22

个回答

  • 手转乾坤
    2017-12-14 10:44:23
    已采纳

    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
                  -- 1.工资总额>5w
                  exit when salTotal>50000;
                  --取一个员工涨工资
                  fetch  cemp into  pempno ,psal;
                  --2.%notfound
                  exit when cemp%notfound;

                  --涨工资
                  if salTotal+psal*1.1<50000 then
                  update  emp set sal = sal*1.1 where empno=pempno;
                  --涨工资的人数
                  countEmp := countEmp+1;
                  --涨后的工资总额
                  salTotal := salTotal+psal*0.1;
                  else exit;
                  end if;  
              end loop;
         --关闭光标
         close cemp;
         dbms_output.put_line('涨工资人数:'||countEmp||  '资总额:'||salTotal);
       end;

  • 星光如此灿烂
    2019-07-16 14:47:16

    不需要用if 直接加个when就可以了

    loop
    exit when cemp%notfound;
    fetch cemp into pempno,psal;
    exit when salTotal > 50000;
    exit when salTotal+psal*0.1 > 50000;
    update emp set sal=sal*1.1 where empno=pempno;
    salTotal := salTotal +psal*0.1;
    countEmp := countEmp +1;
    end loop;