Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter comentários de tabela via SQL no Oracle?


Como o 10g, o Oracle não descarta tabelas imediatamente quando emitimos uma instrução DROP TABLE. Em vez disso, ele os renomeia assim BIN$IN1vjtqhTEKcWfn9PshHYg==$0 e os coloca na lixeira. Isso nos permite recuperar tabelas que não pretendíamos descartar. Saiba mais .

As tabelas na lixeira ainda são tabelas, então elas aparecem em ALL_TABLES e visualizações semelhantes. Portanto, se você quiser ver apenas comentários relacionados apenas a tabelas ativas (não descartadas), precisará filtrar pelo nome da tabela:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/

Você está certo, seria incrível. Então, eu verifiquei a documentação e descobri que o Oracle 10g adicionou uma coluna chamada DROPPED às visualizações 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'
/

Confira a documentação . Obviamente, a necessidade de ingressar na visão ALL_TABLES requer mais digitação do que filtragem no nome, portanto, dependendo de nossa necessidade, pode ser mais fácil manter a cláusula WHERE original.