コードと長い ID を持つ説明を含むコード値テーブルがいくつかあります。
いくつかのコードを参照するアカウント タイプのエントリを作成したいので、次のようなものがあります。
insert into account_type_standard (account_type_Standard_id,
tax_status_id, recipient_id)
( select account_type_standard_seq.nextval,
ts.tax_status_id, r.recipient_id
from tax_status ts, recipient r
where ts.tax_status_code = ?
and r.recipient_code = ?)
これにより、それぞれのコードに一致するものが見つかった場合、tax_status および recipient テーブルから適切な値が取得されます。残念ながら、recipient_code は null 可能であるため、? 置換値は null の可能性があります。もちろん、暗黙的な結合は行を返さないため、行はテーブルに挿入されません。
でNVLを使用してみましたか?およびr.recipient_idで。
r.recipient_code = ? で外部結合を強制しようとしました。(+) を追加しますが、これは明示的な結合ではないため、Oracle はまだ別の行を追加しませんでした。
これを行う方法を知っている人はいますか?
外部で recipient_id のルックアップを行い、? r.recipient_id の代わりに、受信者テーブルから選択しないでください。ただし、これらすべてを 1 つの SQL ステートメントで行うことをお勧めします。