【问题标题】:Querying the Column Name from another Oracle User [duplicate]从另一个 Oracle 用户查询列名 [重复]
【发布时间】:2013-05-02 09:13:11
【问题描述】:

好的,这就是我的情况。我需要从另一个 Oracle 数据库用户那里查询表的列名。它与我的用户名具有相同的架构和相同的数据库连接。

这是我的查询:

Select COLUMN_NAME 
from user_tab_columns 
where table_name='CY_3TRAVELTRAX' AND User = 'PUBLISH_PNL_AFPI_2013';

但我总是得到一个零结果,而实际上用户有很多表和列。有什么帮助吗?提前致谢。

【问题讨论】:

  • user_* 视图只包含当前用户的数据。
  • 建议大家记得先搜索再提问。当您按原样键入标题时,Google 上的第一次点击就是上述问题。
  • 哦,谢谢...它有很大帮助! :)

标签: sql oracle11g


【解决方案1】:

对于大多数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 在他们的职业生涯中至少被此咬过一次)。

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 1970-01-01
    • 2017-12-10
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2012-12-13
    相关资源
    最近更新 更多