场景: 编写一个PL/SQL块,它从用户处获取部门编号,并将属于该部门的所有雇员的工资提高10%。该块应该在屏幕上显示有多少记录被更新。无法在oracle游标更新中找到有多少记录被更新?
我的计划:
DECLARE
V_TOT_ROWS NUMBER(3);
CURSOR emp_cursor IS
SELECT EMPSAL FROM emp WHERE deptno=&DEPT_NO
FOR UPDATE OF EMPSAL NOWAIT;
BEGIN
FOR emp_record IN emp_cursor
LOOP
UPDATE emp
SET EMPSAL=EMPSAL+emp_record.EMPSAL*0.1
WHERE CURRENT OF emp_cursor;
-- V_TOT_ROWS := SQL%ROWCOUNT;
-- DBMS_OUTPUT.PUT_LINE('TOTAL UPDATED RECORDS: ' || V_TOT_ROWS);
DBMS_OUTPUT.PUT_LINE('Updated ' || SQL%ROWCOUNT || ' salaries.');
END LOOP;
COMMIT;
-- DBMS_OUTPUT.PUT_LINE('Updated ' || SQL%ROWCOUNT || ' salaries.');
END;
这是给1行更新每次执行循环时间,但如果我把DBMS_OUTPUT外循环,它给0
请帮助。
感谢,
你可以分享一些示例数据和关联表的模式吗? –
是的。名称空类型 ------ ---- ------------ ENAME VARCHAR2(40) EMPNO NUMBER(7) EMPSAL NUMBER(7) DEPTNO NUMBER(3)数据:xyz,2,10000,1 – Prasann