【问题标题】:How to SELECT from object type column in Oracle 11g?如何从 Oracle 11g 中的对象类型列中进行选择?
【发布时间】:2012-05-06 06:59:55
【问题描述】:

大家好, 我有以下两个 Oracle 对象:

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

我唯一能得到没有任何错误的参数是来自汽车对象的参数。

仅供参考,我在 CentOS 6.2 上使用 Oracle 11g

干杯, 博扬

【问题讨论】:

    标签: oracle object select oracle11g


    【解决方案1】:

    您需要使用 TREAT 函数让数据库引擎将 VEHICLE 视为卡车,如:

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

    分享和享受。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-06
      • 2012-05-08
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多