Oracle 11g。これはばかばかしいはずですが、私は例を見ていないようです。私は、わずかに異なるログメッセージを書く必要がある2つの例外を持っています。そして、それらは同じUPDATEとCONTINUEを実行する必要があります。Oracle PL/SQL - すべての例外に対して同じコードブロックを実行するにはどうすればよいですか?
例外を構造化する方法はありますか?異なるロギングを維持しながら、UPDATEステートメントとCONTINUEステートメントを一度入力するだけです。
FOR my_rec IN my_cursor
LOOP
BEGIN
...do some stuff
EXCEPTION
WHEN NO_DATA_FOUND THEN
log_detail.new('Skipping record - ID not found');
UPDATE my_table
SET operation_result = 'Failed'
WHERE my_id = my_rec.some_id;
CONTINUE;
WHEN OTHERS THEN
log_detail.new('Skipping record - unknown error');
UPDATE my_table
SET operation_result = 'Failed'
WHERE my_id = my_rec.some_id;
CONTINUE;
END;
END LOOP;
あなたは 'update'(および任意の他のない別の手順(潜在的にローカル・プロシージャ)を定義することができます両方の例外ハンドラからそのプロシージャを呼び出しますか? –
@JustinCave私はそれを考えましたが、私はまだCONTINUEをする必要があります。私はちょうど私が行方不明だったトリックがあると思ったが、それが唯一の方法なら... – TrojanName
あなたがスキップしたいループ内に追加のロジックがない限り、ここで 'continue'が必要であるとは確信していません。私は 'log_detail.new'を呼び出し、ログメッセージと' my_rec.some_id'をパラメータとして受け取った 'update'を実行しました。 –