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

涨工资问题修改版

/*  为员工涨工资。

    从最低工资涨起每人涨10%,但是工资总额不能超过5万块。

    请计算涨工资的人数和涨工资后的工资总额,

    并输出涨工资的人数和工资总额

*/

set serveroutput on


declare

    cursor cemp is select empno, sal from emp;

    pempno emp.empno%type;

    psal emp.sal%type;

    

    --涨工资的人数

    countEmp number := 0;

    

    -- 涨工资后的工资总额

    salTotal number;

    

begin

    -- 涨工资之前的工资总额

    select sum(sal) into salTotal from emp;


    open cemp;

    loop

        fetch cemp into pempno, psal;


        -- 退出条件1:工资总额 > 5w,退出

        exit when salTotal + psal * 0.1 > 50000;

        

        -- 涨后工资总额

        salTotal := salTotal + psal * 0.1;


        -- 涨工资

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

        

        -- 人数加一

        countEmp := countEmp + 1;

        

        -- 退出条件2:%notfound

        exit when cemp%notfound;        

        

    end loop;

    

    --因为有update操作,所以要commit

    commit;

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

end;

/


提问者:宇智波带自行车 2020-11-05 21:18

个回答

  • 慕斯卡6169147
    2020-12-04 16:29:58

    6666