漲工資問題修改版
/*? 為員工漲工資。
? ? 從最低工資漲起每人漲10%,但是工資總額不能超過5萬塊。
? ? 請計算漲工資的人數(shù)和漲工資后的工資總額,
? ? 并輸出漲工資的人數(shù)和工資總額
*/
set serveroutput on
declare
? ? cursor cemp is select empno, sal from emp;
? ? pempno emp.empno%type;
? ? psal emp.sal%type;
? ??
? ? --漲工資的人數(shù)
? ? 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;
? ? ? ??
? ? ? ? -- 人數(shù)加一
? ? ? ? countEmp := countEmp + 1;
? ? ? ??
? ? ? ? -- 退出條件2:%notfound
? ? ? ? exit when cemp%notfound;? ? ? ??
? ? ? ??
? ? end loop;
? ??
? ? --因為有update操作,所以要commit
? ? commit;
? ? dbms_output.put_line('人數(shù):' || countEmp || '工資總額:' || salTotal);
end;
/
2020-12-04
6666