Oracle数据库中有两个模式。
MYSCHEMA
由我控制。
OTHERSCHEMA
不受我控制。
我只知道我可以从select * from OTHERSCHEMA.OTHEROBJECT
获得结果。但是,OTHEROBJECT
是同义词。
在我的包裹中,我有一个类似
的声明insert into MYSCHEMA.MYTABLE(COL1) select COL1 from OTHERSCHEMA.OTHEROBJECT;
但它给了我Table or view does not exist.
如何解决或绕过此问题?谢谢!
答案 0 :(得分:11)
我假设您有权通过角色选择otherschema.otherobject
,而不是直接授权(例如grant all on otherschema.otherobject to myschema
)。如果是这种情况,则不会使用此角色中的权限来确定PL / SQL块中的权限。
另请参阅How Roles Work in PL/SQL Blocks(Oracle Docu,其中在具有定义者权利的命名块中使用的角色:
在使用定义者权限执行的任何命名PL / SQL块(存储过程,函数或触发器)中禁用所有角色。角色不用于权限检查,也不能在定义者的权限过程中设置角色。)