子类型对象的SuperType表未显示添加的属性

时间:2019-12-06 01:17:26

标签: sql oracle oracle-xe

我正在尝试创建一个包含子类型对象的对象超类型表,但是一旦运行,最底行的插入将显示插入的前两个属性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'));

1 个答案:

答案 0 :(得分:0)

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

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

您输入错误(类型定义中不必要的分号),并且缺少ApartmentType和表a1的定义,因此这是我的测试数据:dbfiddle

以下是提到的成员函数show()的示例:Inheritance in SQL Object Types