0

私は手続きを書いており、SQL挿入クエリの成功ステータスのログを記録しようとしています。if ERR 挿入をエラー ログ テーブルに書き込む方法がわかりません。

insert into TableA (select * from TableB);
commit;

**if (show ERR <> NULL)
 insert into TableErr**

誰が私をどうやってやればいいの?検索してみるが、検索するキーがわからない

4

2 に答える 2

1

PL/SQL でエラーを処理する従来の方法と同様に、SQL を使用して大量のデータをロードする場合は、エラー処理テーブルの使用を検討してください。

ドキュメントから: http://docs.oracle.com/cd/E11882_01/server.112/e17120/tables004.htm#InsertDMLErrorLogging

サブクエリを含む INSERT ステートメントを使用してテーブルをロードする場合、エラーが発生すると、ステートメントは終了し、全体がロールバックされます。これは、時間とシステム リソースの浪費になる可能性があります。このような INSERT ステートメントの場合、DML エラー ログ機能を使用してこの状況を回避できます。

DML エラー ロギングを使用するには、DML 操作中に発生したエラーをデータベースが記録するエラー ロギング テーブルの名前を指定するステートメント句を追加します。このエラー ログ句を INSERT ステートメントに追加すると、特定の種類のエラーが終了せず、ステートメントがロールバックされなくなります。代わりに、各エラーがログに記録され、ステートメントが続行されます。その後、後でエラーのある行に対して修正アクションを実行します。

于 2013-04-05T10:55:37.610 に答える