Вы ищете USER_TAB_COLUMNS
- все столбцы и их описания в схеме, в которой выполняется запрос - или ALL_TAB_COLUMNS
- то же самое, за исключением всехтаблицы, которые пользователь может просматривать.
Типичным запросом может быть:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
- это «порядок» столбца в таблице.
Вы должны убедиться, что MY_TABLE написан с заглавной буквы, если только вы не добавляли таблицы с регистром (плохая идея), и в этом случае вам нужно использовать что-то вроде = "MyTable"
.
В частности, desc
эквивалентно следующему, которое я украл из ss64 , хорошего ресурса Oracle:
select column_name as "Name"
, nullable as "Null?"
, concat(concat(concat(data_type,'('),data_length),')') as "Type"
from user_tab_columns
where table_name = 'MY_TABLE';
Вы можете найти все такого рода представленияна select * from dictionary
, который является верхним уровнем словаря данных или просмотрев документацию .
Также существует DBA_TAB_COLUMNS
, который являетсятакой же, как ALL_TAB_COLUMNS
, но для каждой таблицы в базе данных.Это предполагает, что у вас есть права на просмотр как таблицы, так и таблицы.Если у вас нет доступа к этой таблице, вам необходимо получить от администратора базы данных права на SELECT ANY DICTIONARY
.