第一段你输出结果是fetch到的,fetch的时候还没有update呀。

解决方案 »

  1.   

    dbms_output.put_line('姓名:' || v_ename || '工资:' || v_sal || ' 员工号:' || v_id); 这个是update之前的数据,当然没有发生改变了。你应该在update sal之后把sal值返回给变量,然后再输出就可以了。declare
      type cq_ref is ref cursor;
      type_ref cq_ref;
      v_ename  emp.ename%type;
      v_sal    emp.sal%type;
      v_id     emp.empno%type;
    begin
      open type_ref for
        select ename, sal, empno from emp where deptno = &a;
      loop
        fetch type_ref
          into v_ename, v_sal, v_id;
        exit when type_ref%notfound;
        if v_sal < 1000 then
          update emp set sal = sal + 1 where empno = v_id 
          returning sal into v_sal; -- 加上returnning语句,返回更新之后的字段值
        end if;
        dbms_output.put_line('姓名:' || v_ename || '工资:' || v_sal || ' 员工号:' || v_id);
      end loop;
      commit;
    end;