从schema2访问schema1的所有表/包?

时间:2015-04-02 06:31:31

标签: oracle

我想从schema2访问schema1的所有表和包。 我也给了补助金。如下所示。

grant execute on hr.GetName_Proc_IN to hr2;

通过这个,我可以用" hr。"

执行这样的操作
begin
hr.UnitTest_RnD_PKG.GetName_Proc_IN('Hi','Welcome');
end;

但我不想使用" hr。"并希望执行如下:

begin
UnitTest_RnD_PKG.GetName_Proc_IN('Hi','Welcome');
end;

投掷错误。 无论如何我可以这样做..感谢你的帮助。感谢

1 个答案:

答案 0 :(得分:1)

最简单的方法是在schema1中创建一个同义词:

create synonym UnitTest_RnD_PKG for hr.UnitTest_RnD_PKG

如果你不想手工为很多对象输入这个,你可以使用这个查询创建一个sql脚本:

select 'create synonym ' || object_name || ' for ' || owner || '.' || object_name || ';'
  from dba_objects
  where object_type in ('PACKAGE','TABLE')
    and owner = 'schema2'

或创建一个从目录中创建同义词的过程。