Эх, всегда найдется человек, который начнет спрашивать "а зачем тебе оно нужно", "чем не устраивает это или то" и т.д. и т.п. :(
В общем все оказалось не так страшно и напряжно :)
select
case when data_type = 'NUMBER' then data_type||decode(data_scale, null, null, 0, '('||data_precision||')', '('||data_precision||','||data_scale||')')
when data_type LIKE '%CHAR%' or data_type = 'RAW' then data_type||'('||data_length||')'
else data_type
end type
,t.*
from all_tab_columns t
where 1=1
and owner = 'XXX'
and table_name = 'YYY'
надеюсь всё учел...