How to SELECT from object type column in Oracle 11g?

六月ゝ 毕业季﹏ 提交于 2019-12-18 11:49:06

问题


Hy guys, I have following two Oracle objects:

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

And also, there is another object:

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

There is also following table:

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

Here is some data:

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

Finally, my question is: How to select only number of doors and number of seats from vehicle table column?

I tried following but it does not work:

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

I got following error:

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

Only parameter that i can get without any error is one from car object.

FYI, I am using Oracle 11g on CentOS 6.2

Cheers, Bojan


回答1:


You need to use the TREAT function to get the database engine to treat VEHICLE as a TRUCK, as in:

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

Share and enjoy.



来源:https://stackoverflow.com/questions/10318272/how-to-select-from-object-type-column-in-oracle-11g

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!