Oracle DB, Oracle APEX, Linux etc.

пятница, 31 мая 2013 г.

Oracle: запрос для отображения комментариев к таблице в виде DDL

Простой запрос для получения готовых DDL-операторов COMMENT с комментариями к таблице и её столбцам:

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
/

Полезен как заготовка в ситуациях, когда нужно создать скрипт добавления или изменения комментариев к таблице.
Читать далее