2012-04-25 18 views
11

Hy guys, Mam następujące dwoma obiektami Oracle:Jak wybrać z kolumny typu obiektu w Oracle 11g?

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

a także, nie ma innego obiektu:

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

Istnieje również poniższą tabelą:

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

Oto niektóre dane:

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

Na koniec moje pytanie brzmi: Jak wybrać tylko liczbę drzwi i liczbę miejsc z kolumny tabeli pojazdu?

Próbowałem następujących ale to nie działa:

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

mam następujący błąd:

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

Jedynym parametrem, który mogę dostać bez błędu jest jednym z obiektu samochodem.

FYI, używam Oracle 11g na CentOS 6.2

Cheers, Bojan

Odpowiedz

28

trzeba użyć funkcji leczyć, aby silnik bazy danych, aby leczyć pojazdu jako samochód ciężarowy, na przykład:

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

Udostępnij i ciesz się.

+1

Działa to doskonale, dzięki :) – snijele

Powiązane problemy