2009-06-28 11 views
4

Ich mag wie etwas tun, dieseWie kann ich in oracle11g einen Typ definieren, der auf eine Sammlung dieses Typs verweist?

create type Item as object (
    id number, 
    subitems table of ref Item 
) 

aber Orakel wirft eine Ausnahme, wenn ich versuche, es zu tun. Ist das möglich, und wenn ja, wie?

+0

Was ist die Ausnahme? – akf

+0

PLS-00103: Das Symbol "TABLE" wurde gefunden, wenn eines der folgenden Ereignisse erwartet wird: langer doppelter Zeichenabstand Zeitstempel Intervalldatum binär nationales Zeichen nchar – pablochan

Antwort

8

Oracle kompiliert Ihre Definition nicht, da der Typ Item noch nicht kompiliert wurde. Warum nicht Sie diesem einen Versuch geben:

das Kompilieren:

CREATE OR REPLACE TYPE Item; 

CREATE OR REPLACE TYPE items_table IS TABLE OF REF item; 

und dann versuchen:

CREATE OR REPLACE TYPE item AS OBJECT (
    id number, 
    subitems items_table 
) 
0

das wäre schön wäre es nicht! Man könnte dies versuchen:

create type item_ids_t is table of number; 

create type Item as object (
    id number, 
    subitems item_ids_t); 

Was bedeutet, dass Subitems nur eine Liste von IDs ist, die dann verwendet werden, würde eine Tabelle von id indiziert nachzuschlagen.