2009-06-28 8 views
4

Je veux faire quelque chose comme çaComment puis-je définir un type dans oracle11g qui fait référence à une collection de ce type?

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

mais oracle jette une exception lorsque je tente de le faire. Est-ce possible, et si oui alors comment?

+0

quelle est l'exception? – akf

+0

PLS-00103: Le symbole "TABLE" a été rencontré lors de l'attente de l'un des éléments suivants: long double ref char temps horodatage intervalle date binaire caractère national nchar – pablochan

Répondre

8

Oracle ne compilera pas votre définition car le type Item n'a pas encore été compilé. Pourquoi vous ne donnez pas cette solution:

ce Compile:

CREATE OR REPLACE TYPE Item; 

CREATE OR REPLACE TYPE items_table IS TABLE OF REF item; 

puis essayez:

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

Ce serait bien serait-ce pas! Vous pouvez essayer ceci:

create type item_ids_t is table of number; 

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

Ce qui signifie que les sous-éléments est juste une liste des ids, qui serait ensuite utilisé pour rechercher une table indexée par id.

Questions connexes