Как я могу определить тип в oracle11g, который ссылается на коллекцию этого типа?

Я хочу сделать что-то подобное

<code>create type Item as object (
    id number,
    subitems table of ref Item
)
</code>

но оракул выдает исключение, когда я пытаюсь это сделать. Возможно ли это, и если да, то как?

 akf28 июн. 2009 г., 15:23
что является исключением?
 pablochan01 июл. 2009 г., 10:52
PLS-00103: Обнаружен символ "TABLE" при ожидании одного из следующих действий: & lt; идентификатор & gt; & lt; двойная кавычка с разделителем-идентификатором & gt; long double ref char время отметка времени интервал дата двоичный национальный символ nchar

Ответы на вопрос(2)

Это было бы хорошо, не правда ли! Вы можете попробовать это:

create type item_ids_t is table of number;

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

Это означает, что подэлементы - это просто список идентификаторов, который затем будет использоваться для поиска таблицы, проиндексированной по идентификатору.

Решение Вопроса

Oracle не скомпилирует ваше определение, потому что типItem еще не скомпилировано. Почему бы вам не попробовать?

Скомпилируйте это:

CREATE OR REPLACE TYPE Item;

CREATE OR REPLACE TYPE items_table IS TABLE OF REF item;

а затем попробуйте:

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

Ваш ответ на вопрос