Как ВЫБРАТЬ из столбца типа объекта в Oracle 11g?

Эй, ребята, у меня есть два объекта Oracle:

CREATE OR REPLACE TYPE car AS OBJECT( 
name VARCHAR( 80 ) 
) NOT FINAL;

А еще есть еще один объект:

CREATE OR REPLACE TYPE truck UNDER car ( 
doors NUMBER,
seats NUMBER 
);

Также есть следующая таблица:

CREATE TABLE vehicles (
id NUMBER NOT NULL,
vehicle car,
PRIMARY KEY (id)
);

Вот некоторые данные:

INSERT INTO vehicles ( id, vehicle ) VALUES ( 1, truck( 'ford', 4, 4 ) );
INSERT INTO vehicles ( id, vehicle ) VALUES ( 2, truck( 'toyota', 4, 5 ) );

Наконец, мой вопрос: Как выбрать только количество дверей и количество мест в столбце таблицы транспортных средств?

Я пробовал следовать, но это не работает:

SELECT v.vehicle.doors AS doors AS seats FROM vehicles v;

У меня следующая ошибка:

ORA-00904: "V"."VEHICLE"."DOORS": invalid identifier

Единственный параметр, который я могу получить без ошибок, - это параметр от автомобильного объекта.

К вашему сведению, я использую Oracle 11g на CentOS 6.2

Ура, Боян


person Bojan Bijelić    schedule 25.04.2012    source источник


Ответы (1)


Вам нужно использовать функцию TREAT, чтобы заставить ядро ​​базы данных обрабатывать ТРАНСПОРТНОЕ СРЕДСТВО как ГРУЗОВИК, как в:

SELECT ID, TREAT(vehicle AS TRUCK).DOORS FROM VEHICLES

Делитесь и наслаждайтесь.

person Bob Jarvis - Reinstate Monica    schedule 25.04.2012