日期:2014-05-17  浏览次数:20791 次

【求助】大家帮我看看这个代码的问题在哪里
要求是这样的:
1.以Scott用户登录
2.修改EMP表下的SAL:先将SAL从小到大的排序起来,然后从第一个人开始加工资,增加幅度为10%,增加的工资总额不超过50万。
(也就是说有50万给你加工资,从最少的开始加,当50万用完了,后边即使还有人没有被加上也不管了)

set serveroutput on
declare
sal1 NUMBER(7,2);
sal2 NUMBER(7,2);
sal3 NUMBER(7,2);
mark NUMBER(7,2):=0;
cursor x is 
select sal from emp 
order by sal;
begin
open x;
loop
exit when mark>500000; 
fetch x into sal1;
sal3:=sal1;
sal2:=sal1+sal1*0.1;
update emp set sal=sal2 where sal=sal3;
mark:=mark+sal1;
end loop;
dbms_output.put_line(mark);
close x;
end;
/

在SQL*PLUS运行后总是变得程序无法响应
我的经验少,请大家指点指点吧

------解决方案--------------------
把mark NUMBER(7,2):=0;
改成mark NUMBER(8,2):=0;