Oracle 怎么查询其他用户表中是否包含某个字段

Oracle如何查询其他用户表中是否有包含某个字段名,注意是其他用户中的所有表,而非当前用户。目前登录的用户是有权限浏览和修改其他用户表。如下图所示,我知道怎么查最上面的表,但是想查最下面其他用户中的表是否包含某个字段不会,请各位帮帮忙.

比如查,含有DNAME这个字段的表

1

select * from  user_tab_columns where column_name='DNAME'

其中table_name就是表名,DNAME那里要用英文半角大写

追问

是最下面其他用户表,用你的这句查只能查到最上面的表

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-17
其实还是 司马铸剑 说的那张表,只不过要把 user_tab_columns 改为all_tab_columns(如果没有这张表,我很少用all的表,经常用dba系列表,所以有没有all的这张表我不确定,但是dba_tab_columns一定存在)这样就可以找到该用户能查看的所有的表了。也就能知道包含该字段的所有的表的表名了。
如果只要其他用户的不要自己用户的,那么就和all_tables两张表联合起来查询,那么就应该没问题了。
类似于:select a.table_name from all_tab_columns a,all_tables b where a.column_name='DNAME' and a.table_name=b.table_name and b.owner !=XXX
不一定完全对,仅仅是一个思路,毕竟这种试图很久没查了,可能有些出入。本回答被提问者采纳
第2个回答  2019-01-17
all_ 开头的视图可以查到你拥有权限的所有对象
比如all_tables , all_objects就能看到,里面有owner字段 , 对应的user_tables是只显示本用户自己的对象追问

比如要找所有User=DWH的用户的表我知道select * from All_tables where owner='DWH',但是要找DWH下所有表中的字段是否有包含ID的字段还是搞不定。麻烦帮忙指点一下

相似回答