Ответ 1
Вы ищете 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
.