Doppelter / zufälliger Aliasname in Select-Klausel auf Oracle 11g löst keine Ausnahme für ungültige Bezeichner aus

9

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:

  1. Ist das nicht ein Syntaxfehler?
  2. Kann jemand dieses Verhalten erklären?

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.

    
Jakob 04.06.2015, 06:51
quelle

2 Antworten

1

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.

    
Mihail 27.08.2015 09:33
quelle
0
  

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.

    
Joop Eggen 05.06.2015 07:34
quelle

Tags und Links