Skip to Main Content

Oracle PL/SQL Einzel-Tipp ansehen

Hier sehen Sie unseren PL/SQL-Tipp „SAVE Exceptions”.

SAVE Exceptions

Tipp 44

  Thema: EXCEPTION
  Datenbank-Version: RDBMS 8.x
  Erstellt am 07.10.19
  Bearbeitet am 07.10.19
SQL%BULK_EXCEPTIONS.COUNT
SQL%BULK_EXCEPTIONS(i).ERROR_INDEX
SQL%BULK_EXCEPTIONS(i).ERROR_CODE
DECLARE
  TYPE  emp_rec IS RECORD(empno number, ename varchar2(100));
  TYPE emp_tab_type IS TABLE OF emp_rec
  INDEX BY BINARY_INTEGER;
  t_emp emp_tab_type;
BEGIN
  --Array füllen
  t_emp(1).empno:=8010;
  t_emp(1).ename:='MARCOOOOOOOOOOOO';
  t_emp(2).empno:=8011;
  t_emp(2).ename:='MARCO';
  t_emp(3).empno:=8012;
  t_emp(3).ename:='MARCOsafsafsdfsdfsdfsd';
  FORALL i IN 1 .. t_emp.count SAVE EXCEPTIONS
  INSERT INTO emp (empno,ename) values (t_emp(i).empno,t_emp(i).ename);

  EXCEPTION WHEN OTHERS THEN
  for i in 1 .. sql%bulk_exceptions.count loop
    dbms_output.put_line('Fehler ' || i || ' aufgetreten an Stelle:'||
    SQL%BULK_EXCEPTIONS(i).ERROR_INDEX||' Wert:'||t_emp(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX).ename);
    dbms_output.put_line('Oracle error is ' || SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
  END loop;
END;
/
In der Array Verarbeitung stehen beim zurückschreiben aus einem Array in eine Tabelle folgende Funktionen zur Verfügung:
  • SQL%BULK_EXCEPTIONS.COUNT
  • SQL%BULK_EXCEPTIONS(i).ERROR_INDEX
  • SQL%BULK_EXCEPTIONS(i).ERROR_CODE

Wussten Sie schon, dass wir auch Schulungen zu Oracle PL/SQL anbieten?