Nee, er is geen voorwaarde waaronder de resultatensets anders zullen zijn.
Maar uw aanname "a.id = b.id(+)
heeft geen betekenis" is niet 100% correct. Het heeft een betekenis, omdat het de join definieert, anders zou dit een cartesiaans product zijn van a en b met alle rijen van a en b.name ='XYZ'.
Wat geen effect heeft, is de (+)
, omdat de verklaring "semantisch" verkeerd is. Het heeft geen zin om outer join op id te doen, maar om op naam mee te doen.
Meestal is zoiets gewenst:
select * from a,b where a.id =b.id(+) and b.name(+) = 'XYZ';
Kort voorbeeld op http://www.sqlfiddle.com/#!4/d19b4/ 15