Samstag, Januar 02, 2016

Outer Join Beschränkungen in 12c

Einige interessante Beobachtungen zum Thema "Outer Joins in traditioneller Syntax  (aka Oracle-Join-Syntax) " - also mit Verwendung des + Operators statt des OUTER JOIN Schlüsselworts (aka ANSI-Join-Syntax) hat Philipp Salvisberg vor kurzem in seinem Blog zusammengestellt. Demnach sind die relevanten inhaltlichen Einschränkungen, die den + Operator in älteren Releases betrafen, in 12.1.0.2 alle verschwunden: insbesondere "ORA-01417: a table may be outer joined to at most one other table" und "ORA-01719: outer join operator (+) not allowed in operand of OR or IN" treten nicht mehr auf, und diese Fehler waren in der Vergangenheit gelegentlich ein guter Grund für eine massive Umgestaltung einer Query. Geblieben sind einige exotischere Fehlermeldungen wie etwa "ORA-01416 two tables cannot be outer-joined to each other", die sich gut begründen lassen - weil dergleichen inhaltlich in der Tat völlig sinnlos wäre.

Auf diese Weise scheint der + Operator wieder deutlich an Attraktivität gewonnen zu haben, denn die (aus meiner Sicht lesbarere und auch von Oracle gelegentlich empfohlene) ANSI-Join-Syntax ist meines Wissens immer noch mit relativ vielen Bugs verknüpft (die allerdings eher in komplexeren Ausnahmefällen relevant werden). Auf jeden Fall scheint die Begründung des Verzichts auf den + Operator mit funktionalen Beschränkungen nicht mehr stichhaltig zu sein.

Keine Kommentare:

Kommentar veröffentlichen