为了账号安全,请及时绑定邮箱和手机立即绑定

关于给员工涨工资的那个老师没有写完整的案例

有没有老师写的那个给员工涨工资的完全代码

正在回答

2 回答

declare
   cursor cemp is select empno ,sal from emp order by sal;
   --定义参数
   pempno emp.empno%type;
   psal emp.sal%type;
   countEmp number :=0;
   salTotal number;

   begin
     --得到工资总额的初始值
     select  sum(sal) into salTotal from emp;
     --打开光标
     open cemp;
          loop
              -- 1.工资总额>5w
              exit when salTotal>50000;
              --取一个员工涨工资
              fetch  cemp into  pempno ,psal;
              --2.%notfound
              exit when cemp%notfound;

              --涨工资
              if salTotal+psal*1.1<50000 then
              update  emp set sal = sal*1.1 where empno=pempno;
              --涨工资的人数
              countEmp := countEmp+1;
              --涨后的工资总额
              salTotal := salTotal+psal*0.1;
              else exit;
              end if;  
          end loop;
     --关闭光标
     close cemp;
     dbms_output.put_line('涨工资人数:'||countEmp||  '资总额:'||salTotal);
   end;

2 回复 有任何疑惑可以回复我~
#1

慕粉2310089285 提问者

非常感谢!
2017-12-29 回复 有任何疑惑可以回复我~
#2

WestBrook_wyf

--涨工资 if salTotal+psal*1.1<50000 then 这个涨工资条件,不应该是涨后总工资吗? 涨后总工资=涨前总工资+涨的工资数额 应该是:if salTotal+psal*0.1<50000 then 把? 求解答。。 (小白一枚,个人见解)
2018-10-09 回复 有任何疑惑可以回复我~
#3

panda赵 回复 WestBrook_wyf

me too
2019-04-16 回复 有任何疑惑可以回复我~

不需要用if 直接加个when就可以了

loop
exit when cemp%notfound;
fetch cemp into pempno,psal;
exit when salTotal > 50000;
exit when salTotal+psal*0.1 > 50000;
update emp set sal=sal*1.1 where empno=pempno;
salTotal := salTotal +psal*0.1;
countEmp := countEmp +1;
end loop;


0 回复 有任何疑惑可以回复我~
#1

慕九州7682859

第4行的退出条件可以省略吗?
2019-07-27 回复 有任何疑惑可以回复我~
#2

星光如此灿烂 回复 慕九州7682859

可以省略,那行确实冗余了。
2019-07-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于给员工涨工资的那个老师没有写完整的案例

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信