How to SELECT from object type column in Oracle 11g?(如何从 Oracle 11g 中的对象类型列中选择?)
问题描述
伙计们,我有以下两个 Oracle 对象:
Hy guys, I have following two Oracle objects:
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 ) );
最后,我的问题是:如何从车辆表列中只选择门数和座位数?
我尝试了以下但它不起作用:
I tried following but it does not work:
SELECT v.vehicle.doors AS doors AS seats FROM vehicles v;
我收到以下错误:
ORA-00904: "V"."VEHICLE"."DOORS": invalid identifier
我可以毫无错误地获得的唯一参数是来自汽车对象的参数.
Only parameter that i can get without any error is one from car object.
仅供参考,我在 CentOS 6.2 上使用 Oracle 11g
FYI, I am using Oracle 11g on CentOS 6.2
干杯,博扬
推荐答案
需要使用TREAT函数让数据库引擎把VEHICLE当成TRUCK,如下:
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
分享和享受.
这篇关于如何从 Oracle 11g 中的对象类型列中选择?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何从 Oracle 11g 中的对象类型列中选择?
基础教程推荐
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01