--從工資最低的員工開始,給員工漲10%的工資,但工資總額不能超過5W元,并輸出工資總額與漲工資員工人數(shù)
declare
??--定義光標
??cursor?cemp?is?select?empno,sal?from?emp?order?by?sal;
??pempno?emp.empno%type;??--員工工號
??psal?emp.sal%type;??--員工工資
?
???--漲工資員工人數(shù)
??pnum?number?:=0;?
??--當前工資總額
??psumsal?number;?
??
??begin
??--當前工資總額
??select?sum(sal)?into?psumsal?from?emp;
??
??--打開光標
??open?cemp;
??
??loop?
??
????--取出一條數(shù)據(jù)
????fetch?cemp?into?pempno,psal;
????--結束條件:cemp已空?或?工資總額(當前工資總額+當前需漲金額)超過5W
????exit?when?cemp%notfound?or?(psumsal+?psal*0.1)>50000;
????
????--更新數(shù)據(jù)庫,漲10%工資
????update?emp?set?sal=sal*1.1?where?empno=pempno;
????
????--更新漲工資員工人數(shù)
????pnum?:=?pnum+1;
????--更新當前工資總額
????psumsal?:=?psumsal+psal*0.1;
????
??end?loop;
??
??--關閉光標
??close?cemp;
??
??--提交更改
??commit;
??
??--輸出結果
??dbms_output.put_line('工資總額:'||psumsal);
??dbms_output.put_line('漲工資員工人數(shù):'||pnum);
??
??end;
/
2020-05-04
看錯了,哈哈,fetch看成下面了,樓主這個最優(yōu)
2020-05-04
推出條件還是要分開寫,exit when cemp%notfound;還是要寫在fetch后
2020-05-04
你這么寫就會出現(xiàn)15個人
2016-03-15
把那個exit when 的條件改為樓主所給出的條件,就可以實現(xiàn)想要的結果了
2016-03-07
exit when (salTotal + psal*0.1) > 50000;
2015-11-04
exit when (salTotal + psal*1.1) > 50000;
2015-10-31
請問這樣設計之后,結果應該還是會超過5W吧?