el comando desc se interpreta de manera diferente para diferentes herramientas. Lo que hace es seleccionar algunas vistas estándar de Oracle.
Aquí hay una consulta sobre esas vistas que proporcionarán los datos de columna deseados, pero le animo a hacer una selección * para ver todo lo que está disponible.
Tienes 3 tipos de vistas, la dba_, all_ y vistas de usuario_*. Uso user_* porque está disponible para cada esquema/usuario, pero enumera solo los objetos que pertenecen a ese esquema/usuario. Las vistas de dba_ suelen ser solo para dba, y las vistas de all_ pueden o no estar disponibles para usted dependiendo de cuánto confíen en usted sus dba. ^_^
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)