2012-04-25 4 views
11

Hy ребята, я следующие два объекта Oracle:Как выбрать столбец типа объекта в Oracle 11g?

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 

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

FYI, я использую Oracle 11g на CentOS 6.2

Приветствия, Боян

ответ

28

Вы должны использовать функцию TREAT, чтобы получить ядро ​​базы данных для лечения АВТОМОБИЛЯ как TRUCK, как:

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

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

+1

Это работает отлично, спасибо :) – snijele

Смежные вопросы