Oracle中如何通过SQL获取表注释?

2024-03-02

我试过了 :

select * from user_tab_comments;

它返回 3 列“TABLE_NAME”、“TABLE_TYPE”和“COMMENTS”,但“TABLE_NAME”列就像“加密”,我需要明确的表名称:

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

当我使用select * from user_tables;TABLE_NAME 未“加密”。


由于 10g Oracle 在我们发出 DROP TABLE 语句时不会立即删除表。相反,它像这样重命名它们BIN$IN1vjtqhTEKcWfn9PshHYg==$0并将它们放入回收站。这使我们能够恢复我们不想删除的表。了解更多 http://www.orafaq.com/node/968.

回收站中的表仍然是表,因此它们显示在 ALL_TABLES 和类似视图中。因此,如果您只想查看仅与实时(未删除)表相关的注释,则需要按表名称进行过滤:

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

“我不敢相信没有标志列,所以你可以这样做 is_recycled = 0 或其他东西。”

你是对的,这将是令人难以置信的。所以我检查了文档,结果发现 Oracle 10g 在 USER_/ALL_/DBA_TABLES 视图中添加了一个名为 DROPPED 的列。

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'
/

查看文档 https://docs.oracle.com/database/121/REFRN/GUID-6823CD28-0681-468E-950B-966C6F71325D.htm#REFRN20286。显然,连接到 ALL_TABLES 视图需要比名称过滤更多的输入,因此根据我们的需要,保留原始 WHERE 子句可能会更容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle中如何通过SQL获取表注释? 的相关文章

随机推荐