理想的には、DMLエラーログを使用することをお勧めします。例
エラーログテーブルを作成する
begin
dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
err_log_table_name => 'EMPLOYEE_ERR' );
end;
DMLエラーログを使用する
BEGIN
insert into employee( id )
select id
from (select '01' id from dual
union all
select '02' from dual)
log errors into employee_err
reject limit unlimited;
END;
失敗したすべての行について、これによりその行のデータがEMPLOYEE_ERR
に記録されます。 例外と一緒にテーブル。次に、エラーログテーブルをクエリして、失敗した最初の行だけを取得するのではなく、すべてのエラーを確認できます。
エラー・ログ表を作成するオプションがない場合は、一括操作でSQLからPL/SQLに移行できます。それは遅くなりますが、SAVE EXCEPTIONS
を使用できます FORALL
の句 繰り返し処理できる例外のネストされたテーブルを作成するステートメント。