Gestern ist einem meiner Kollegen folgendes Problem begegnet: eine Query mit exzessivem Subquery Factoring (also vielen Abfrageblöcken im WITH) lief problemlos und ließ sich auch problemlos in einer View verwenden. Nach Einbindung in die DataSourceView eines SSAS-Projekts brachte das Processing eines auf der View basierenden Objekts dann aber die folgende Fehlermeldung (bzw. die deutschsprachige Version dazu):
ORA-32036: unsupported case for inlining of query name in WITH clause
Über Google landeten wir dann schnell bei Dom Brooks, der das Thema gelegentlich in seinem Blog beleuchtet hat: "According to a couple of metalink articles, the feature/bug/issue/problem is that SQL*Plus, Toad and SQLDeveloper are not reporting the error, rather than the correct behaviour as per ODBC or any other driver raising the error." Dort findet man dann neben den Links auf MOS in einem der Kommentare auch noch einen Workaround, mit dem wir vermeiden konnten, die (halbwegs) übersichtliche View noch einmal komplett neu zu definieren: nämlich die Verwendung des Parameters DistribTx=0 im Connection String der DataSource, mit dem man die Verwendung von verteilten Transaktionen deaktiviert - wobei ich nicht behaupten will, den inneren Zusammenhang von Subquery Factoring und Distributed Transactions im Detail verstanden zu haben ...
Grundsätzlich scheint es doch noch ein paar Fälle zu geben, in denen Subquery Factoring nicht ganz so stabil funktioniert wie entsprechende Inline Views. Vermutlich ist das ein ähnlicher Fall wie der der ANSI-Join-Syntax, die bei Oracle ja auch noch nicht ganz so solide ist wie die traditionelle Schreibweise, obwohl auch sie die Übersichtlichkeit von SQL-Code erhöhen kann.
Keine Kommentare:
Kommentar veröffentlichen