【问题标题】:SuperType Table of subtype objects not showing added attributes未显示添加属性的子类型对象的超类型表
【发布时间】:2020-03-30 23:58:07
【问题描述】:

我正在尝试创建一个包含子类型对象的超类型对象表,但是运行一次的底线插入显示前两个属性 SSN 和名称为插入。 Oracle Express 这些天刚刚坏了吗?还是我的代码有问题?

create or replace type PersonType as object (
  SSN number (9),
  name varchar2(30))
  Instantiable
  NOT Final;

create or replace type TenantType under PersonType (
  aptNum REF ApartmentType,
  phone number(10),
  car varchar2(15),
  contract varchar2(10));
  Instantiable
  Final;

create or replace type EmployeeType under PersonType (
  empId number(4),
  empAdr varchar2(40));
  Instantiable
  Final;

create table P1 of PersonType (
  constraint P1_SSN_pk Primary Key (SSN));

insert into P1 values(TenantType(956785252, 'Jerry Wilson', (select ref(a) from A1 a where aptNum = 110), 8015167895, 'Toyota', '8 months'));

【问题讨论】:

    标签: sql oracle oracle-xe


    【解决方案1】:

    如果您运行简单选择,您会看到超类型的常见值。创建类型时可以添加成员函数以不同方式显示子类型,也可以使用treat()

    select treat(value(p) as tenanttype) from p1 p where p.ssn = 956785252
    

    您有拼写错误(类型定义中不必要的分号)并且缺少ApartmentType 和表a1 的定义,所以这是我的测试数据:dbfiddle

    这里是提到的成员函数show()的例子:Inheritance in SQL Object Types

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2012-10-02
      • 2014-08-12
      • 2020-09-02
      相关资源
      最近更新 更多