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.