2010-01-20 113 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列的限制。此限制將包括從類型和超類型派生的任何隱藏列。它看起來像你的表超過了這個限制。