declare
CURSOR cur_emp is SELECT empno,EJOB, sal FROM emp for update of sal;
v_zsal emp.sal%TYPE;
v_zemp emp.empno%type;
v_zjob emp.EJOB%type;
v_sal number;
BEGIN
if not cur_emp%isopen THEN
open cur_emp;
end IF;
LOOP
fetch cur_emp INTO v_zemp,v_zjob, v_zsal;
if v_zjob='PRESIDENT' THEN
UPDATE emp set sal= sal*1.3 where empno= v_zemp;
elsif v_zjob='MANAGER' THEN
UPDATE emp set sal= sal*1.2 where empno= v_zemp;
else
UPDATE emp set sal=sal*1.1 where empno= v_zemp;
end if;
select sum(sal) into v_sal from emp;
dbms_output.put_line(v_sal);
if v_sal<100000 THEN
dbms_output.put_line('涨工资成功');
exit;
else
dbms_output.put_line('涨工资失败');
rollback;
end if;
END LOOP;
CLOSE cur_emp;
end;
这是我写的,但是目前一更新 就更新的数值不对,例如:PRESIDENT这个职位的人让他涨30%结果就涨10%数值根本对不上。不知道哪里出了问题