Hledáte USER_TAB_COLUMNS
- všechny sloupce a jejich popisy ve schématu, ve kterém je dotaz proveden - nebo ALL_TAB_COLUMNS
- stejné kromě všech tabulek, které má uživatel oprávnění prohlížet.
Typický dotaz může být:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
je "pořadí" sloupce v tabulce.
Měli byste se ujistit, že 'MY_TABLE' je velká, pokud nepřidáváte tabulky s velkými a malými písmeny (špatný nápad), v takovém případě musíte použít něco jako = "MyTable"
.
Konkrétně desc
je ekvivalentní následujícímu, který jsem ukradl z ss64, dobrého zdroje 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';
Všechny tyto druhy zobrazení můžete najít select * from dictionary
, což je nejvyšší úroveň datového slovníku nebo nahlédnutím do dokumentace.
K dispozici je také DBA_TAB_COLUMNS
, což je stejné jako ALL_TAB_COLUMNS
, ale pro každou tabulku v databázi. To předpokládá, že máte oprávnění prohlížet jej i tabulky. Nemáte-li přístup k této tabulce, musíte požádat svého DBA, aby vám udělil SELECT ANY DICTIONARY
privilegium.