Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment puis-je décrire une table dans Oracle sans utiliser la commande DESCRIBE ?

Vous recherchez USER_TAB_COLUMNS - toutes les colonnes et leurs descriptions dans le schéma dans lequel la requête est exécutée - ou ALL_TAB_COLUMNS - le même sauf pour toutes les tables que l'utilisateur est autorisé à afficher.

Une requête typique pourrait être :

select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id est "l'ordre" de la colonne dans le tableau.

Vous devez vous assurer que 'MY_TABLE' est en majuscule, sauf si vous avez ajouté des tables avec une casse (une mauvaise idée), auquel cas vous devez utiliser quelque chose comme = "MyTable" .

Plus précisément desc équivaut à ce qui suit que j'ai volé à ss64, une bonne ressource 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';

Vous pouvez trouver tout ce type de vue en select * from dictionary , qui est le niveau supérieur du dictionnaire de données ou en consultant la documentation.

Il y a aussi le DBA_TAB_COLUMNS , qui est identique à ALL_TAB_COLUMNS , mais pour chaque table de la base de données. Cela suppose que vous disposez des privilèges nécessaires pour l'afficher ainsi que les tables. Si vous n'avez pas accès à cette table, vous devez demander à votre DBA de vous accorder le SELECT ANY DICTIONARY privilège.