私は以下のレガシーPL/SQLに遭遇し、幾分混乱するスカラー・定数に対する外部ジョインを見つけました。まず、誰かがこれをANSIに変換しようとする試みが正しいことを確認してください。レガシー・アウター・ジョインからANSIへの変換
レガシーコード:
cursor c1item (c1item_iel_id number) is
select
`<columns>`
from iel_item iit, iel_item_property iip
where iit.iit_change_type = 'I'
and iip.iip_change_type (+) = 'I'
and iip.it_id (+) = iit.it_id
and iit.iel_id = c1item_iel_id
and iip.iel_id (+) = c1item_iel_id;
ANSIコード
cursor c1item (c1item_iel_id number) is
select
`<columns>`
from iel_item iit
left outer join iel_item_property iip
on iip.it_id = iit.it_id
and iit.iit_change_type = 'I'
and iip.iip_change_type = 'I'
and iit.iel_id = c1item_iel_id
and iip.iel_id = c1item_iel_id;
これが正しい場合は、私は外部結合を使用してのポイントが表示されていません。確かに、主キーをIITが IIPテーブルに対応する外部キーを持っていない次いでiip.iit_change_typeとiip.iel_id両方は、それらが除外される場合には、NULLであろう表にをit_id場合AND節によって。ではなぜ内部結合を使用しないのですか?何か不足していますか?または元のコードナンセンスですか?
レガシーをANSIに変更しているのですか、ANSIの扱いをちょうど取り戻していますか? –
レガシーコードを理解しようとしています。 ANSIに変換すると助けになるようです。 – JohnA
しかし、コードをANSIに変更するつもりはありませんか? –