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 09.08.24
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?