Ich versuche, Gehalt der Mitarbeiter mit Forall aktualisieren. Wenn während der Aktualisierung ein Fehler auftritt, muss ich speichern, für welchen Mitarbeiter-ID-Fehler aufgetreten ist. Aber es gibt Fehler folgende während Fehler Kompilieren (14,24): PLS-00201: Bezeichner 'INDX'Erhalten von IDs fehlgeschlagen für alle Ausnahmen speichern
deklariert werden muss, istUnter meinen Code
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;
Das funktioniert aber nicht geben Sie mir ein Mitarbeiter-ID, für die Fehler @ XING aufgetreten – PTK
So zu Ihrer Frage kommenden bin nicht sicher, warum machst du ein 'ausführen sofort 'wenn Sie das' update' direkt ausführen können. Siehe meinen aktualisierten Beitrag. Sie erhalten keine 'employee_id', denn Orakel findet keine Ausnahme. – XING