![]() |
Datenbank: oracle • Version: 11 • Zugriff über: egal(?)
Ansi-Join provoziert Fehler
Hallo zusammen
hier ist ja schon öfter mal über ANSI-Joins Ja oder Nein diskutiert worden, mit folgender Abfrage habe ich dann folgenden Fehler provozieren können:
Code:
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1 join tab2 using (idkey) join tab3 on (tab2.seckey=tab3.objectkey) where .... Zitat:
denn
Code:
funktioniert dann wieder.
select tab1.Feld1,tab2.Feld2,Tab3.Felda
from tab1 join tab2 using (idkey) join tab3 on (tab2.seckey=tab3.objectkey) where .... Joint man nach "alter Väter Sitte"
Code:
gibt es keine Probleme und Fehlermeldungen.
select tab1.Feld1,tab2.Feld2,Tab3.*
from tab1,tab2,tab3 where tab1.idkey=tab2.idkey and tab2.seckey=tab3.objectkey and .... Gruß K-H |
AW: Ansi-Join provoziert Fehler
Sieht nach einem Fehler im OleDB-Treiber aus.
|
AW: Ansi-Join provoziert Fehler
Die Adresse ABABABAB klingt mir auch stark nach einer "Magic" Adresse, die einen (als unmöglich auftretend gedachten) Fehler leichter auffindbar machen soll. Hat man früher zumindest gerne mal gemacht so. Da scheint wirklich was in der DLL struppig zu sein.
|
AW: Ansi-Join provoziert Fehler
Vergiss die Adresse, bei drei Aufrufen war sie dreimal anders.
Wo zum .. kommt die DLL her? Tante G hat da nichts erhellendes gebracht, nur die üblichen Besserwisserseiten. Gruß K-H |
AW: Ansi-Join provoziert Fehler
Meine Theorie ist:
- offensichtlich kein "ORA-" Fehler, also ein Treiberproblem (OLEDB) - Die Joinvarianten, die Du produzierst, sind nur der Auslöser, da sie - vermutlich durch andere Ausführungspläne bzw. in einem Fall anderes Select Statement -> andere Daten ausspucken Da liegt dann der Hase im Pfeffer. Der Treiber hat ein Problem mit den Daten. Typischerweise sind das Date Werte vor Christi Geburt usw. Vielleicht kannst Du das durch eingrenzen des selects nachvollziehen. Es müsste demzufolge ein Single Table Select reichen (ohne Join) um das Problem zu reproduzieren. (wenn man die fehlerhaften Daten erwischt) Seit ich auf Oracle OLEDB umgestiegen bin (glaub aktuell Version 11.2 bei mir) hab ich sowas (Treiberprobleme mit Dateninhalten) allerdings nicht mehr erlebt. P.S.: Hab grad erst die "OraOLEDBrst11.dll" im Post endeckt. Also 11er Oracle OLEDB Client? Ist schon etwas her, aber ich erinner mich, dass ich "damals" den Instant Client 11.2 vorinstalliert habe und den OLEDB Teil aus den älteren "ODAC" Komponenten nachinstalliert. Um eben halt so aktuell wie möglich zu sein. Mittlerweile dürfte es ja wesentlich aktuellere Treiber geben. |
AW: Ansi-Join provoziert Fehler
|
AW: Ansi-Join provoziert Fehler
Nee die Datenwerte aus der Steinzeit hab ich auch schon mal gehabt, das ist es nicht.
Es liegt einzig an dem "select Tab3.*" be dem ein Feld aus Using mit ausgegeben wird (werden sollte) bloß gibts dann normalerweise einen richtigen ORA.Fehler. Gruß K-H |
AW: Ansi-Join provoziert Fehler
Und was ist wenn "using(idkey)" durch "on tab1.idkey=tab2.idkey" ersetzt wird?
|
AW: Ansi-Join provoziert Fehler
Zitat:
Das Tab3.* hat mit dem using eigentlich nichts zu tun, denn das using bezieht sich auf den Join von tab1 und tab2, während tab3 einen expliziten "on " Join hat (und das Asterisks gemurkse vom using nicht relevant sein dürfte). Daher dürften die komischen Feld Selektor Alias Automatismen (ich find sowas furchtbar) nicht greifen. Hat aber vielleicht irgendjemand bei Oracle selbst nicht verstanden und falsch programmiert. :) Aber vielleicht hab ich es auch nicht verstanden :) @Mikal: Ist das etwa Humor hier in der DP?! |
AW: Ansi-Join provoziert Fehler
Zitat:
Während meiner Studienzeit hat es ein Mitkommilitone geschafft durch eine Select-Anweisung das ganz Uni-Netz lahm zu legen (ok, der Server auf dem die Oracle-DB lag war nicht nur DB-Server). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz