#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 … И т. Д. И т. Д.)