我正在尝试更新使用福利的员工的工资。每当更新时发生任何错误,我需要保存哪些员工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