J'ai essayé :
select * from user_tab_comments;
et il me renvoie 3 colonnes "TABLE_NAME", "TABLE_TYPE" et "COMMENTS", mais la colonne "TABLE_NAME" est comme "cryptée", j'ai besoin de noms de table clairs:
TABLE_NAME TABLE_TYPE COMMENTS
BIN$IN1vjtqhTEKcWfn9PshHYg==$0 TABLE Résultat d'intégration d'une photo numérisée
BIN$PUwG3lb3QoazOc4QaC1sjw==$0 TABLE Motif de fin d'agrément de maître de stage
Lorsque j'utilise "select * from user_tables;" TABLE_NAME n'est pas "crypté".
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 apparaissent donc dans TOUS_TABLES et dans des vues similaires. Donc, si vous ne souhaitez voir que les commentaires relatifs aux tables actives (non supprimées), vous devez filtrer par nom de table:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
"Je ne peux pas croire qu'il n'y ait pas de colonne de drapeau, vous pouvez donc le faire et is_recycled = 0 ou quelque chose."
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'
/
Découvrez la documentation . De toute évidence, 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 facile de conserver la clause WHERE d'origine.
SELECT t.table_name, t.comments FROM USER_TAB_COMMENTS t WHERE TABLE_NAME = 'SS_DEPT';