2013-09-23 4 views
1

Мне нужно восстановить столбец таблицы, используя данные столбца в DBA_TAB_COLUMNS, и поэтому для его разработки мне нужно понять, к чему относится каждый столбец. Я хочу понять, что такое DATA_TYPE_MOD - документация (http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2094.htm#I1020277) говорит, что это модификатор типа данных, но я не могу найти столбцы с этим заполненным полем или каким-либо образом заполнить это поле фиктивным столбцом. Кто-нибудь знаком с этим полем?Модификатор Oracle Datatype

ответ

1

Data_type_mod столбец представления словаря [all][dba][user]_tab_columns данных получает заполняется при столбец таблицы объявлен как ссылка на тип объекта, используя REF тип данных (содержит идентификатор объекта (OID) объекта, на который он указывает).

create type obj as object(
    item number 
) ; 

    create table tb_1(
    col ref obj 
) 


    select t.table_name 
     , t.column_name 
     , t.data_type_mod 
    from user_tab_columns t 
    where t.table_name = 'TB_1' 

Результат:

table_name column_name data_type_mod 
----------------------------------------- 
TB_1   COL   REF 
0

Oracle имеет пакет PL/SQL, который может быть использован для создания DDL для создания таблицы. Вероятно, вам лучше использовать это.

См GET_DDL на http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#i1019414

И смотри также: How to get Oracle create table statement in SQL*Plus

+0

Да я в курсе этого пакета. Причина, по которой мне нужно понять эти столбцы, заключается в том, что когда я добавляю столбец или изменяю существующий столбец, мне не нужно бросать и создавать таблицу, я могу просто запустить ALTER. Я могу сгенерировать переменную путем сравнения столбцов DBA_TAB_COLUMNS и данных в моей собственной таблице, хранящей все столбцы таблицы. – drouleau

Смежные вопросы