在程序包编译中绕过“表或视图不存在”

时间:2011-12-22 04:20:18

标签: oracle compilation package synonym

Oracle数据库中有两个模式。

MYSCHEMA由我控制。

OTHERSCHEMA不受我控制。

我只知道我可以从select * from OTHERSCHEMA.OTHEROBJECT获得结果。但是,OTHEROBJECT同义词

在我的包裹中,我有一个类似

的声明
insert into MYSCHEMA.MYTABLE(COL1) select COL1 from OTHERSCHEMA.OTHEROBJECT;

但它给了我Table or view does not exist.

如何解决或绕过此问题?谢谢!

1 个答案:

答案 0 :(得分:11)

我假设您有权通过角色选择otherschema.otherobject,而不是直接授权(例如grant all on otherschema.otherobject to myschema)。如果是这种情况,则不会使用此角色中的权限来确定PL / SQL块中的权限。

另请参阅How Roles Work in PL/SQL Blocks(Oracle Docu,其中在具有定义者权利的命名块中使用的角色

  

在使用定义者权限执行的任何命名PL / SQL块(存储过程,函数或触发器)中禁用所有角色。角色不用于权限检查,也不能在定义者的权限过程中设置角色。)