Супертип подтипа с созданием объектного типа Oracle.Ограничение на количество подтипов?

StackOverflow https://stackoverflow.com/questions/2101660

Вопрос

Я столкнулся с проблемой при создании типа объекта в Oracle 10g, который наследуется от супертипа.В настоящее время у нас есть много типов объектов, которые наследуются от этого супертипа, и недавно компилятор начал выдавать следующие ошибки

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

Существует ли ограничение на количество подтипов, которые вы можете сгенерировать, которые наследуются от супертипа?

Это было полезно?

Решение

Когда вы создаете таблицы со столбцами на основе пользовательских типов, 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 столбцов на таблицу.Это ограничение будет включать любой из этих скрытых столбцов, производных от типов и супертипов.Похоже, что ваш стол превысил этот лимит.

Другие советы

использовать команду:

PURGE RECYCLEBIN;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top