結果セットが次の 2 つのステートメントと異なる条件はありますか?
select * from a,b where a.id = b.id and b.name = 'XYZ'
select * from a,b where a.id =b.id(+) and b.name = 'XYZ'
どちらの場合も、 a と b where から共通の行がもたらされると思いますb.name = 'XYZ'
。だからa.id = b.id(+)
意味がない。
いいえ、結果セットが異なるという条件はありません。
a.id = b.id(+)
しかし、「意味がない」というあなたの仮定は 100% 正しいわけではありません。結合を定義するため、意味があります。そうでない場合、これは、a と b のすべての行を持つ a と b のデカルト積になります。name = 'XYZ'.
(+)
ステートメントが「意味的に」間違っているため、効果がないのはです。ID で外部結合するのは意味がありませんが、名前で結合することは意味がありません。
通常、次のようなものが必要です。
select * from a,b where a.id =b.id(+) and b.name(+) = 'XYZ';