обнаружение столбцов oracle UDT

#database #oracle #user-defined-types #data-dictionary

#База данных #Oracle #определяемые пользователем типы #словарь данных

Вопрос:

У меня есть запрос, который извлекает схему таблицы a из словаря данных oracle, и я хочу иметь возможность определять, какой из его столбцов является столбцом типа, определенного пользователем UDT. является ли следующий SQL разумным?

 select * from
all_tab_cols
    join all_types on all_tab_cols.DATA_TYPE_OWNER = all_types.owner
    and all_tab_cols.DATA_TYPE = all_types.TYPE_NAME
where ALL_TAB_COLS.owner not in ('SYS', 'SYSTEM', 'XDB')
  

Ответ №1:

Да, это в значительной степени то, что вам нужно. Варианты действительно зависят от того, что вы считаете нужным включать или нет. Например.

  • Некоторые сложные типы данных принадлежат PUBLIC (в ALL_TAB_COLS), но их истинный тип обычно будет принадлежать SYS в ALL_TYPES
  • Существуют другие схемы, которые вы, возможно, захотите включить / исключить (MDSYS, APEX … И т. Д. И т. Д.)