de opdracht desc wordt verschillend geïnterpreteerd voor verschillende tools. Wat het doet, is een selectie maken van enkele standaard Oracle-weergaven.
Hier is een zoekopdracht over die weergaven die de gewenste kolomgegevens zullen opleveren, maar ik raad u aan om * te selecteren om alles te zien wat beschikbaar is.
Je hebt 3 soorten weergaven, de dba_, all_ , en gebruiker_* weergaven. Ik gebruik user_* omdat dat beschikbaar is voor elk schema/gebruiker, maar het geeft alleen de objecten weer die eigendom zijn van dat schema/die gebruiker. De dba_-weergaven zijn meestal alleen voor dba's, en de all_-weergaven kunnen al dan niet voor u beschikbaar zijn, afhankelijk van hoeveel uw dba's u vertrouwen. ^_^
select tc.column_name
, tc.nullable
, tc.data_type || case when tc.data_type = 'NUMBER' and tc.data_precision is not null then '(' || tc.data_precision || ',' || tc.data_scale || ')'
when tc.data_type like '%CHAR%' then '(' || tc.data_length || ')'
else null
end type
, cc.comments
from user_col_comments cc
join user_tab_columns tc on cc.column_name = tc.column_name
and cc.table_name = tc.table_name
where cc.table_name = upper(:tablename)