2012-04-25 14 views
11

chicos HY, He siguientes dos objetos de Oracle:¿Cómo SELECCIONAR de la columna de tipo de objeto en Oracle 11g?

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

Y también, hay otro objeto:

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

También hay siguiente tabla:

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

Aquí está algunos datos:

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

Finalmente, mi pregunta es: ¿Cómo seleccionar solo el número de puertas y el número de asientos de la columna de la mesa del vehículo?

me trataron siguiente pero no funciona:

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

llegué siguiente error:

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

único parámetro que puedo conseguir sin ningún tipo de error es uno de objeto coche.

FYI, estoy utilizando Oracle 11g en CentOS 6.2

Cheers, Bojan

Respuesta

28

Es necesario utilizar la función de tratar para obtener el motor de base de datos para tratar el vehículo, un camión, como en:

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

Comparte y disfruta.

+1

Esto funciona perfectamente, gracias :) – snijele

Cuestiones relacionadas