Die Tabellenfunktion mit Massensammlung löst einen ungültigen Datentyp aus

7

Ich schreibe eine Funktion, und ich möchte sie mit Tabellenfunktion umhüllen, so dass ich mit Select-Abfrage verwenden kann.

Hier ist meine Deklaration und einige Zeilen meiner Funktionen

%Vor%

Wenn ich die TABLE-Funktion wie unten verwenden möchte, erhalte ich error.ORA-00902: ungültiger Datentyp

%Vor%

Kann mir bitte jemand helfen, was ich hier falsch mache?

Vielen Dank im Voraus

    
Jeevan 10.06.2013, 21:26
quelle

3 Antworten

15

Sie versuchen, Typen auf Paketebene in einfacher SQL zu verwenden, was nicht erlaubt ist. Die im Paket deklarierten Typen sind außerhalb von PL / SQL (oder sogar in einfachen SQL-Anweisungen in PL / SQL) nicht sichtbar oder gültig. Eine verkürzte Version von dem, was Sie tun:

%Vor%

Selbst wenn Sie innerhalb des Pakets eine Prozedur hatten, die versuchte, die Tabellenfunktion zu verwenden, würde es einen Fehler geben. Wenn Sie hinzugefügt haben:

%Vor%

... die Kompilierung des Paketkörpers würde mit ORA-22905: cannot access rows from a non-nested table item fehlschlagen.

Sie müssen die Typen auf Schemaebene und nicht in einem Paket deklarieren. Verwenden Sie dazu das SQL create type -Befehl :

%Vor%     
Alex Poole 11.06.2013, 08:42
quelle
4

Tatsächlich müssen Typen in der Schemaebene nicht vorhanden sein. Alles, was Sie tun müssen, ist die Funktion PIPELINED zu definieren.

%Vor%     
Borivojs 19.09.2014 07:22
quelle
0

Danke an Alex Poole. Dies ist, was ich mit

endete %Vor%     
Jeevan 11.06.2013 21:19
quelle

Tags und Links