小白有一個不解,關(guān)于update emp set sal = sal*1.1 where empno = pempno
set serveroutput on;
declare
countEmp number := 0;--漲工資的人數(shù)
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;
? ? ? ? ? ? ? ? ? ?--人數(shù)+1
? ? ? ? ? ? ? ? ? ?countEmp := countEmp+1;
? ? ? ? ? ? ? ? ? ?--漲后=漲前+工資*0.1
? ? ? ? ? ? ? ? ? ?salTotal := salTotal + psal*0.1;--psal從上面繼承110%sal
? ? ? ?end loop;
? close cemp;
??
? commit;
??
? dbms_output.put_line('漲工資的人數(shù)'||countEmp||'漲后的工資總額'||salTotal);
end;
/
小白剛來,求教
如果加粗的語句不用,好像也能求出人數(shù)和總額吧?
2019-08-27
是的,但是加了可以在后面繼續(xù)執(zhí)行,你不更新就一直是同樣的數(shù)據(jù)做一百遍。