gpt4 book ai didi

oracle - 使用具有父类(super class)型属性的类型创建对象表

转载 作者:行者123 更新时间:2023-12-04 04:34:01 26 4
gpt4 key购买 nike

我正在尝试创建Oracle对象类型的Oracle表。

这是我的对象结构的样子

CREATE OR REPLACE TYPE PERS_T AS OBJECT 
(

empno number(4)
, ename varchar2(10)
, job varchar2(9)
, hiredate DATE
, sal number(7,2)
, comm number(7,2)
, deptno number(2)
)NOT FINAL;

CREATE OR REPLACE TYPE EMP_T FORCE UNDER pers_t (
mgr pers_t
);

所有这些都很好,但是当我尝试使用创建一个 EMP_T类型的表时该怎么办
CREATE TABLE table_name(emp_type EMP_T);

我遇到错误
SQL Error: ORA-30756: cannot create column or table of type that contains a supertype attribute

在oracle中可以创建这样的表吗?

最佳答案

我不这么认为。根据Oracle自己的支持数据库,以下内容适用于ora-30756

Error Text, Cause and Action from Message File/s for ORA-30756

Versions 9.2, 10.1, 10.2, 11.1, 11.2, 12.1

Error: ORA-30756 cannot create column or table of type that contains a supertype attribute

Cause: The user tried to create a column or table of an object type that contains a supertype attribute. This is not supported because it leads to infinite recursion in our current storage model. Note that creating a column of a type implies that we create columns corresponding to all subtype attributes as well. Action: Change the type definition to contain a supertype REF attribute instead of the supertype object attribute.



您已经创建了一个 super 类型PERS_T,所以我相信这是您的问题。如文章所述,您可以创建引用属性而不是对象属性,如@tbone所解释的那样-创建表table_name(emp_type REF EMP_T);

关于oracle - 使用具有父类(super class)型属性的类型创建对象表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com