Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como posso descrever uma tabela no Oracle sem usar o comando DESCRIBE?


Você está procurando por USER_TAB_COLUMNS - todas as colunas e suas descrições no esquema em que a consulta é executada - ou ALL_TAB_COLUMNS - o mesmo, exceto para todas as tabelas que o usuário tem permissão para visualizar.

Uma consulta típica pode ser:
select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id é a "ordem" da coluna na tabela.

Você deve garantir que 'MY_TABLE' esteja em maiúscula, a menos que você esteja adicionando tabelas com maiúsculas (uma má ideia), caso em que você precisa usar algo como = "MyTable" .

Especificamente desc é equivalente ao seguinte que roubei do ss64, um bom recurso 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';

Você pode encontrar todo esse tipo de visualização select * from dictionary , que é o nível superior do dicionário de dados ou consultando a documentação.

Há também o DBA_TAB_COLUMNS , que é o mesmo que ALL_TAB_COLUMNS , mas para cada tabela no banco de dados. Isso pressupõe que você tenha privilégios para visualizar tanto ele quanto as tabelas. Se você não tiver acesso a esta tabela, você precisa obter seu DBA para conceder a você o SELECT ANY DICTIONARY privilégio.