首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle中的SubType参考

Oracle中的SubType参考
EN

Stack Overflow用户
提问于 2010-12-14 07:46:56
回答 1查看 742关注 0票数 2

请帮帮忙,问题在最下面。

代码语言:javascript
复制
CREATE OR REPLACE TYPE NameType AS OBJECT 
(firstName VARCHAR(20), middleName VARCHAR(20), lastName VARCHAR(20))
INSTANTIABLE
FINAL;

CREATE OR REPLACE TYPE ServicerType AS OBJECT 
(servicerID INTEGER, servicerType VARCHAR(10))
INSTANTIABLE
FINAL;

CREATE OR REPLACE TYPE PersonType AS OBJECT 
(personID INTEGER, name NameType, gender CHAR(1))
INSTANTIABLE
NOT FINAL;

CREATE OR REPLACE TYPE EmployeeType UNDER PersonType 
(servicerRef REF ServicerType)
NOT INSTANTIABLE
NOT FINAL;

CREATE OR REPLACE TYPE FullTimeEmployeeType UNDER EmployeeType 
(yearlySalary NUMBER(19,4))
INSTANTIABLE
FINAL;

CREATE TABLE Servicer OF ServicerType;
CREATE TABLE Person OF PersonType;

INSERT ALL
INTO Servicer values (ServicerType(100, 'Company')
SELECT * FROM dual

INSERT ALL
INTO Person VALUES (FullTimeEmployeeType(200, 
    NameType('Bob', 'T', 'Builder'), 'M', 
    (select ref(s) from servicer s where servicerid = 100), 56700))
SELECT * FROM dual

现在我想运行这个查询:

代码语言:javascript
复制
select p.gender, p.name.firstName, p.name.lastName, p.yearlySalary from person p

我收到一个错误。我知道yearlySalary在FullTimeEmployee中,它是person的一个子类型,但我只是不知道如何引用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-14 09:53:13

您需要TREAT函数

代码语言:javascript
复制
select p.gender, p.name.firstName, p.name.lastName,
        treat(value(p) as FullTimeEmployeeType).yearlySalary
from person p
/
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4434622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档