2010-01-20 97 views
1

在Oracle 10g中创建一个继承自超类型的对象类型时,我遇到了一个问题。目前,我们从这个超继承和最近的编译器开始抛出下面的错误具有Oracle对象类型创建的子类型超类型。限制子类型的数量?

ORA-30745: error occured while trying to add column "SYS_NC_ROWINFO$" in table "DATA_CACHE.CACHE_ENTRIES"

ORA-01792: maximum number of columns in a table or view is 1000

是否有亚型的数量上限您可以生成从继承许多对象类型超类型?

回答

3

当您使用基于用户定义类型的列创建表时,Oracle会为您在封面下创建更多“秘密”列。例如:

SQL> create type emp_data_t as object (empno number, ename varchar2(30)); 
    2/

Type created. 

SQL> create table emp_data_table (id int, emp_data emp_data_t); 

Table created. 

此表出现有2列:

SQL> desc emp_data_table 
Name      Null? Type 
-------------------------- -------- ------------------------ 
ID         NUMBER(38) 
EMP_DATA       EMP_DATA_T 

...但它真的四:

SQL> select name 
    2 from sys.col$ 
    3 where obj# = (select object_id 
    4    from user_objects 
    5    where object_name='EMP_DATA_TABLE'); 

NAME 
------------------------------ 
ID 
EMP_DATA 
SYS_NC00003$ 
SYS_NC00004$ 

正如你所看到的, Oracle每个表有1000列的限制。此限制将包括从类型和超类型派生的任何隐藏列。它看起来像你的表超过了这个限制。

相关问题