Подтвердить что ты не робот

Как я могу описать таблицу в Oracle без использования команды DESCRIBE?

Мне тяжело заниматься классом, который я принимаю. Нам нужно написать Oracle script, который будет действовать так же, как команда DESCRIBE. Книга, которую мы используем, описывает, как работать с Словарем данных очень плохо. Не ища ответов, но точка в правильном направлении.

4b9b3361

Ответ 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.

Ответ 2

Вы также можете получить всю команду, которая может использоваться для воссоздания таблицы:

select dbms_metadata.get_ddl('TABLE','<my table name>','<table owner>') from dual;

Ответ 3

Oracle имеет набор таблиц, содержащих метаданные о структуре базы данных. Существует таблица таблиц. Таблица представлений. Таблица столбцов. Вы можете запросить эти таблицы с помощью таких представлений, как USER_TABLES (таблицы в вашей схеме), ALL_TABLES (таблицы, для которых у вас есть разрешение на просмотр), DBA_TABLES (все таблицы, если у вас есть привилегии). В более общем плане многие поставщики баз данных поддерживают "информационную схему", которая обеспечивает согласованное представление метаданных между поставщиками. Найдите "ALL_TABLES" здесь и посмотрите на всю имеющуюся информацию http://docs.oracle.com/cd/B28359_01/server.111/b28320/toc.htm