次のようなストアドプロシージャがあります。
BEGIN
INSERT INTO result_table
(SELECT (...) FROM query_table);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
END;
SELECTステートメントに複数のパラメーターを渡すループで実行しています。場合によっては、値の一部が重複する可能性があるため、DUP_VAL_ON_INDEX例外をキャッチする必要があります。
私の質問は、SELECTステートメントがより多くの行を返し、そのうちの1つだけが*result_table*にすでに存在する場合fです。元。
1 'A'
2 'B'
3 'C'
そして、最初の行(1'A')はすでにテーブルにありますが、存在しない他の行(上記の場合から2番目と3番目)が挿入されますか?または、それらのどれも挿入されませんか?
それらのどれも挿入されないのではないかと心配しています(そして私のテストケースはそれを部分的に確認しています)...もしそうなら、私はどのオプションが望ましい行動を達成する必要がありますか?上記の構造を使用して、主キーに違反しない行を挿入する良い方法はありますか?