Oracle数据库有两种模式
由我控制的MYSCHEMA
不受我控制的OTHERSCHEMA
我只知道我可以从select * from OTHERSCHEMA.OTHEROBJECT
得到结果。而OTHEROBJECT
是的同义词。
在我的包中,有一个像
这样的语句insert into MYSCHEMA.MYTABLE(COL1) select COL1 from OTHERSCHEMA.OTHEROBJECT;
但是它给了我Table or view does not exist.
如何解决或绕过这个问题?谢谢!
我假设您通过角色获得了从otherschema.otherobject
中进行选择的权限,而不是直接授予(如grant all on otherschema.otherobject to myschema
)。如果是这种情况,则该角色中的权限将不会用于确定您在PL/SQL块中的权限。
参见角色在PL/SQL块中的工作原理(Oracle文档),在下说,在具有定义者权限的命名块中使用的角色:
在任何以定义者权限执行的命名PL/SQL块(存储过程、函数或触发器)中,所有角色都被禁用。角色不用于权限检查,并且不能在定义者的权限过程中设置角色。