Stai cercando USER_TAB_COLUMNS
- tutte le colonne e le loro descrizioni nello schema in cui viene eseguita la query - o ALL_TAB_COLUMNS
- lo stesso tranne che per tutte le tabelle che l'utente ha il permesso di visualizzare.
Una query tipica potrebbe essere:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
è l'"ordine" della colonna nella tabella.
Dovresti assicurarti che 'MY_TABLE' sia in maiuscolo a meno che tu non abbia aggiunto tabelle con maiuscolo (una cattiva idea), nel qual caso devi usare qualcosa come = "MyTable"
.
In particolare desc
è equivalente a quanto segue che ho rubato da ss64, una buona risorsa 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';
Puoi trovare tutto questo tipo di visualizzazione select * from dictionary
, che è il livello più alto del dizionario dei dati o guardando la documentazione.
C'è anche il DBA_TAB_COLUMNS
, che è lo stesso di ALL_TAB_COLUMNS
, ma per ogni tabella nel database. Ciò presuppone che tu abbia i privilegi per visualizzare sia esso che le tabelle. Se non hai accesso a questa tabella, devi ottenere il tuo DBA per concederti il SELECT ANY DICTIONARY
privilegio.