Du leder efter USER_TAB_COLUMNS
- alle kolonnerne og deres beskrivelser i skemaet, som forespørgslen udføres i - eller ALL_TAB_COLUMNS
- det samme bortset fra alle tabeller, som brugeren har tilladelse til at se.
En typisk forespørgsel kan være:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
er "rækkefølgen" af kolonnen i tabellen.
Du bør sikre dig, at 'MY_TABLE' er stort, medmindre du har tilføjet tabeller med store og små bogstaver (en dårlig idé), i hvilket tilfælde du skal bruge noget som = "MyTable"
.
Specifikt desc
svarer til følgende, som jeg stjal fra ss64, en god Oracle-ressource:
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';
Du kan finde alt denne slags visninger ved at select * from dictionary
, som er det øverste niveau i dataordbogen eller ved at se i dokumentationen.
Der er også DBA_TAB_COLUMNS
, hvilket er det samme som ALL_TAB_COLUMNS
, men for hver tabel i databasen. Dette forudsætter, at du har rettighederne til at se både det og tabellerne. Hvis du ikke har adgang til denne tabel, skal du få din DBA til at give dig SELECT ANY DICTIONARY
privilegium.