描述:
有user A user B,
A的schema下有table C,B的schema下有table D,
在PLSQL下登录到A ,
执行select * from col where TNAME='C',可以得出C的metadata 。
问:怎样可以通过上述语句得出table D的metadata?

解决方案 »

  1.   

    跨用户的查询应该是不行,首先用户要有权限。
    有权限的条件下
    select * from schema_name.table_name
      

  2.   

    查询“col”视图只能看当前模式下的表信息。
    要想查看别的模式下的表信息,在有相关权限后,可以查询dba_tab_columns视图。
      

  3.   


    可以说的具体些吗?“相关权限”是指什么权限?
    前提:
    因为情况特殊,要求必须以select * from sys.col视图获得table的metadata谢谢
      

  4.   

    b: 下授权
    grant select on d to a 或者create public datalink dl 
    connect to  b identified by psw
    using database
      

  5.   

    你的需求,如果必须使用col查询的话是无法实现的,因为col限制了只能查询当前user的信息。原因是sys.col的视图定义中设置了:t.owner# = userenv('SCHEMAID')要查询其它user的表信息,通过如下:
    SELECT * FROM Dba_Tab_Cols where owner='username';