Gestern bin ich auf ein merkwürdiges Verhalten bei einer Kunden Oracle 10g Instanz gestoßen. Einige Prozeduren, die ich geschrieben habe, gaben mir eine invalid identifier
Ausnahme, aber lief auf meinen Oracle 11g Instanzen gut.
Die relevante Abfrage war ungefähr wie folgt:
%Vor% Bitte beachten Sie den b.b.v_col_b
Teil der Abfrage. Der Wechsel von left join
zu inner join
hat schließlich eine ORA-00904: "B"."B"."V_COL_B": invalid identifier
Ausnahme ausgelöst, aber:
Eine funktionierende Demo finden Sie auf sqlfiddle
Bearbeiten: Die Tabellendefinition wurde hinzugefügt:
%Vor%Edit2: Wie @ LalitKumarB erwähnt, scheint das nur auf Oracle 11g zu passieren.
Glückwunsch, Sie haben einen Fehler gefunden:)
In diesem speziellen Fall können Sie schreiben, was Sie wollen, wenn Sie eine der Tblb-Spalten auswählen:
%Vor%Sie können es sogar mit einem richtigen Join tun:
%Vor%Es wird jedoch nicht mit der Oracle Join-Syntax ((+) Notation) funktionieren.
Es ist kein erwartetes Verhalten und wird, wie Lalit in den Kommentaren feststellt, in 12C festgelegt. Sie können eine Fehleranfrage mit Oracle Support ablegen, wenn Sie möchten. Vielleicht gibt es schon einen Patch dafür.
ORA-00904: "B". "B". "V_COL_B": Ungültiger Bezeichner
In SQL bezieht sich der qualifizierte Bezeichner X.Y.Z auf ein Schema X, Tabelle Y und Spalte Z. Wobei ein einfaches Y.Z Tabelle Y, Spalte Z bedeutet.
Und dann könnte das Aufrufen von X.Y.Z eine Kennung irreführend sein, aber nicht zu unregelmäßig in der Informatik.
Auf das Fehlerverhalten, das Sie erfahren haben, kann ich nicht viel erzählen.