2012-04-25 36 views
11

Hy guys, Tôi đã sau hai đối tượng Oracle:Cách chọn từ cột kiểu đối tượng trong Oracle 11g?

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

Và cũng có thể, có một đối tượng:

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

Ngoài ra còn có bảng sau:

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

Đây là một số dữ liệu:

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

Cuối cùng, câu hỏi của tôi là: Làm cách nào để chỉ chọn số cửa và số chỗ ngồi từ cột bảng xe?

tôi đã cố gắng sau nhưng nó không hoạt động:

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

Tôi có lỗi sau:

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

Chỉ tham số mà tôi có thể nhận được mà không cần bất kỳ lỗi là một trong những từ đối tượng xe.

FYI, tôi đang sử dụng Oracle 11g trên CentOS 6.2

Chúc mừng, Bojan

Trả lời

28

Bạn cần phải sử dụng chức năng TREAT để có được cơ sở dữ liệu để điều trị XE như một XE, như trong:

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

Chia sẻ và thưởng thức.

+1

Điều này hoạt động hoàn hảo, cảm ơn :) – snijele

Các vấn đề liên quan