with par as ( select nvl('&owner', user) owner -- Владелец схемы с таблицей , '&table_name' table_name -- Таблица from dual ) select ddl_stmt from (select p.owner , p.table_name , '' column_name , comments , 'comment on table "'||p.owner||'"."'||p.table_name||'" is ''' || comments ||''';' ddl_stmt from par p left join all_tab_comments tc on p.owner = tc.owner and p.table_name = tc.table_name union all select c.owner , c.table_name , c.column_name , tc.comments , 'comment on column "'||c.owner||'"."'||c.table_name||'"."'||c.column_name||'" is ''' || comments ||''';' ddl_stmt from (select owner, table_name, column_name from par p natural join all_tab_columns c) c left join all_col_comments tc on c.owner = tc.owner and c.table_name = tc.table_name and c.column_name = tc.column_name) order by owner, table_name, column_name nulls first /
Полезен как заготовка в ситуациях, когда нужно создать скрипт добавления или изменения комментариев к таблице.
Хоть и прошло больше 2 лет, но добавлю, что проще пользоваться коммандой:
ОтветитьУдалитьdbms_metadata.get_dependent_ddl('COMMENT', 'TABLE', 'SCHEM'),
Проще, но вначале лучше сделать так:
ОтветитьУдалитьexec dbms_metadata.set_transform_param( dbms_metadata.session_transform, 'SQLTERMINATOR', true );