好的,这是我的情况。我需要从另一个 Oracle 数据库用户那里查询表的列名。它与我的用户名具有相同的架构和相同的数据库连接。
这是我的查询:
Select COLUMN_NAME
from user_tab_columns
where table_name='CY_3TRAVELTRAX' AND User = 'PUBLISH_PNL_AFPI_2013';
但是我总是得到一个零结果,实际上用户有很多表和列。有什么帮助吗?提前致谢。
对于大多数user_
数据字典视图,也有all_
(和dba_
)视图。
文档摘录(位于http://docs.oracle.com/cd/E11882_01/server.112/e17110/statviews_1001.htm#i1572007)描述得最好:
许多数据字典表都有三个对应的视图:
ALL_ 视图显示当前用户可访问的所有信息,包括来自当前用户模式的信息以及来自其他模式中的对象的信息,前提是当前用户通过授予权限或角色的方式访问这些对象。
DBA_ 视图显示整个数据库中的所有相关信息。DBA_ 视图仅供管理员使用。它们只能由具有 SELECT ANY TABLE 权限的用户访问。此权限在系统初始安装时分配给 DBA 角色。
USER_ 视图显示来自当前用户模式的所有信息。查询这些视图不需要特殊权限。
所以你应该使用:
Select COLUMN_NAME
from all_tab_columns
where table_name='CY_3TRAVELTRAX'
AND owner = 'PUBLISH_PNL_AFPI_2013';
注意:要使用的列被调用OWNER
而不是USER
!后者是一个返回当前用户的函数(每个 DBA 在他们的职业生涯中至少被这个咬过一次)。