我正在嘗試更新使用福利的員工的工資。每當更新時發生任何錯誤,我需要保存哪些員工ID錯誤發生。 但它給下面的錯誤在編譯時錯誤 (14,24):PLS-00201:標識符「INDX」必須聲明爲從所有保存例外中獲取失敗的標識
下面是我的代碼
PROCEDURE PROC1 (V_EMP_ID DBMS_SQL.NUMBER_TABLE)
IS
lv_error_string VARCHAR2(4000);
BEGIN
FORALL INDX IN V_EMP_ID.FIRST..V_EMP_ID.LAST SAVE EXCEPTIONS
EXECUTE IMMEDIATE 'UPDATE EMPLOYEES SET SALARY=SALARY+10000 WHERE EMP_ID=:1'
USING V_EMP_ID(INDX);
EXCEPTION
WHEN OTHERS
THEN
FOR J IN 1 .. SQL%BULK_EXCEPTIONS.COUNT
LOOP
lv_error_string:=lv_error_string
||sqlerrm (-sql%bulk_exceptions(j).error_code)
|| ' for'||V_EMP_ID(INDX);
END LOOP;
END;
這工作,但並沒有給我的員工ID爲發生錯誤@邢 – PTK
所以來你的問題,我不知道爲什麼你在做一個'立即執行'當你可以直接運行'update'時。看到我更新的帖子。你沒有得到任何'employee_id' coz oracle doenot找到任何'異常'。 – XING