當您使用基於用戶定義類型的列創建表時,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列的限制。此限制將包括從類型和超類型派生的任何隱藏列。它看起來像你的表超過了這個限制。