Verwenden eines Objekttyps in einer SELECT-Anweisung in Oracle

8

Ich habe eine Funktion, die ein Objekt mit 3 Werten zurückgibt. Gibt es eine Möglichkeit, diese Funktion aus einer SELECT-Anweisung aufzurufen und jeden Wert eine andere Spalte zu haben? Ich könnte es in 3 Funktionen brechen, aber die Werte sind verwandt, also wollte ich es aus Leistungsgründen als eins behalten. (Also muss oracle nicht für jede Zeile in der Abfrage 3 sehr ähnliche komplexe Funktionen aufrufen.)

Also für:

%Vor%

Ich möchte in der Lage sein, test_func von einer select-Anweisung aufzurufen, aber a, b und c müssen verschiedene Spalten sein, ohne die Funktion mehrmals aufzurufen. Ich dachte vielleicht so etwas, aber es funktioniert nicht:

%Vor%

Gibt es eine Möglichkeit, in Oracle 10g so etwas zu tun, oder gibt es einen besseren Weg, dieses Problem zu lösen?

    
Chris B 19.10.2009, 16:27
quelle

2 Antworten

9

Die Select-Anweisung in der Frage funktioniert. Es ist fehlgeschlagen, weil ich keinen Alias ​​für die Inline-Ansicht eingefügt habe.

Aus irgendeinem Grund funktioniert das:

%Vor%

Aber das wird nicht:

%Vor%     
Chris B 19.10.2009, 18:29
quelle
2

Der Tabellenalias platziert das Ergebnis in einen benannten Ergebnismengenkontext, wodurch das Ergebnis als Objektinstanz verwendet werden kann. Ohne den Alias ​​schlägt es fehl, weil das Casting Objekttyp-Instanzen ohne ihre eigene explizite Referenz nicht behandelt, was effektiv der Tabellenalias ist.

    
Michael 21.08.2015 23:37
quelle

Tags und Links