/*
为员工长工资。从最低工资调起每人长10%,但工资总额不能超过50万元,
请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。
可能的sql:
select empno,sal from emp order by sal ;
select sum(sal) into s_sal from emp;
update
*/
set serveroutput on
declare
--定义一个光标代表所有的员工
cursor c1 is select empno,sal from emp order by sal;
--定义两个变量保存光标中的值
pempno emp.empno% TYPE;
psal emp.sal% TYPE;
--计数器保存工资总额
pSalTotal number;
--涨工资人数的计数器
pEmpCount number := 0;
begin
--初始化工资总额
select sum(sal) into pSalTotal from emp;
open c1;
loop
exit when pSalTotal>70000;
--从光标中取值
fetch c1 into pempno, psal;
exit when c1%notfound;
--给员工涨工资
update emp set sal = sal * 1.1 where empno= pempno;
--统计人数
pEmpCount := pEmpCount + 1;
--涨工资后的总额
pSalTotal := pSalTotal + psal * 0.1;
end loop;
close c1;
--提交
commit;
--输出结果
dbms_output.put_line('涨工资的人数' || pempcount);
dbms_output.put_line('涨工资后的总额' || pSalTotal);
dbms_output.put_line('------------------------');
end;
/