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

4

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

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

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

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

Ваш Ответ

2   ответа
0

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

create type item_ids_t is table of number;

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

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

8

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
)

Похожие вопросы