Estás buscando USER_TAB_COLUMNS
- todas las columnas y sus descripciones en el esquema en el que se ejecuta la consulta - o ALL_TAB_COLUMNS
- lo mismo excepto para todas las tablas que el usuario tiene permiso para ver.
Una consulta típica podría ser:
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
es el "orden" de la columna en la tabla.
Debe asegurarse de que 'MY_TABLE' esté en mayúsculas a menos que haya estado agregando tablas con mayúsculas (una mala idea), en cuyo caso necesita usar algo como = "MyTable"
.
Específicamente desc
es equivalente a lo siguiente que robé de ss64, un buen recurso de 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';
Puede encontrar todo este tipo de vista mediante select * from dictionary
, que es el nivel superior del diccionario de datos o consultando la documentación.
También está el DBA_TAB_COLUMNS
, que es lo mismo que ALL_TAB_COLUMNS
, pero para cada tabla en la base de datos. Esto supone que tiene los privilegios para verlo y las tablas. Si no tiene acceso a esta tabla, necesita que su DBA le otorgue el SELECT ANY DICTIONARY
privilegio.