場景: 編寫一個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