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

¿Cómo obtener comentarios de la tabla a través de SQL en Oracle?

Desde 10g, Oracle no descarta inmediatamente las tablas cuando emitimos una instrucción DROP TABLE. En su lugar, los renombra así BIN$IN1vjtqhTEKcWfn9PshHYg==$0 y los pone en la papelera de reciclaje. Esto nos permite recuperar tablas que no queríamos descartar. Más información .

Las tablas en la papelera de reciclaje siguen siendo tablas, por lo que aparecen en ALL_TABLES y vistas similares. Entonces, si solo desea ver comentarios relacionados solo con tablas activas (no eliminadas), debe filtrar por nombre de tabla:

select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/

Tienes razón, sería increíble. Así que revisé la documentación y resultó que Oracle 10g agregó una columna llamada DROPPED a las vistas USER_/ALL_/DBA_TABLES.

select tc.* 
from all_tab_comments tc
     join all_tables t
     on tc.owner = t.owner
     and tc.table_name = t.table_name
where t.dropped = 'NO'
/

Consulte la documentación . Obviamente, la necesidad de unirse a la vista ALL_TABLES requiere escribir más que filtrar el nombre, por lo que, dependiendo de nuestra necesidad, podría ser más fácil mantener la cláusula WHERE original.