Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir des commentaires de table via SQL dans Oracle ?

Depuis 10g, Oracle ne supprime pas immédiatement les tables lorsque nous émettons une instruction DROP TABLE. Au lieu de cela, il les renomme comme ceci BIN$IN1vjtqhTEKcWfn9PshHYg==$0 et les met dans la corbeille. Cela nous permet de récupérer des tables que nous ne voulions pas supprimer. En savoir plus .

Les tables de la corbeille sont toujours des tables, elles s'affichent donc dans ALL_TABLES et dans des vues similaires. Donc, si vous souhaitez uniquement voir les commentaires relatifs aux tables en direct (non supprimées), vous devez filtrer par nom de table :

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

Tu as raison, ce serait incroyable. J'ai donc vérifié la documentation, il s'avère qu'Oracle 10g a ajouté une colonne appelée DROPPED aux vues 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'
/

Consultez la documentation . Évidemment, la nécessité de se joindre à la vue ALL_TABLES nécessite plus de saisie que de filtrage sur le nom, donc selon nos besoins, il pourrait être plus simple de conserver la clause WHERE d'origine.