Если комментарии уже сохранены в вашей базе данных, вы можете запросить user_col_comments
. Вот пример для таблицы test
с комментариями к некоторым столбцам:
create table test (a, b, c) as (
select 1, 'B1', 'C101' from dual union all
select 2, 'B2', 'C102' from dual );
comment on column test.a is 'Id';
comment on column test.c is 'Category name';
У нас есть таблица с тремя столбцами, два из них прокомментированы. Теперь запустите этот блок кода (вы можете изменить его на процедуру, если хотите):
declare
v_table varchar2(30) := 'TEST';
v_sql varchar2(4000);
begin
select listagg(column_name|| case when comments is not null then ' as "'||comments||'"' end,', ')
within group (order by column_id)
into v_sql
from user_tab_columns
left join user_col_comments using (table_name, column_name)
where table_name = v_table;
v_sql := 'create or replace view vw_'||v_table||'_comments as select '||v_sql||' from '||v_table;
execute immediate v_sql;
end;
Этот код создал представление vw_test_comments
динамически. Вы можете запросить это:
select * from vw_test_comments;
Результат, в котором заголовки заменяются комментариями, в которых они были определены (столбцы A и C):
Id B Category name
------ -- -------------
1 B1 C101
2 B2 C102
Демоверсия dbfiddle
Если вы хотите сделать это с таблицей из другой схемы, используйте all_tab_columns
, all_col_comments
и добавьте owner
в запрос.