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.