sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo describir una tabla en Oracle sin usar el comando DESCRIBE?

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.