我正在使用蟾蜍在一个架构中创建一个包,这个包的所有者是我。我的包使用另一个架构的表。
包有一个使用游标的过程。当我创建包时,我会得到编译错误:
主体509 30 PL/SQL: ORA-00904::无效标识符
错误指向游标的选择所使用的表,该表位于另一个架构中。
如果我在蟾蜍中直接运行这个查询,它就能很好地工作,我是Oracle的新手,我不明白为什么会出现这个错误。我为什么要犯这个错误?
发布于 2014-06-19 03:49:42
摘自“指南,11g版本2 (11.2),E 41502-05”中的6编写PL/SQL子程序和软件包部分
要创建没有错误(要成功编译子程序或包),需要这些附加特权: --必须显式地授予子程序或包的所有者--必须为code.正文中引用的所有对象授予必要的对象特权--所有者不能通过角色获得所需的权限。
必须将此表上的select权限授予拥有包的架构。重要的是,此权限应直接授予包所有者,而不是使用角色间接授予。使用角色足以直接由蟾蜍选择表,但如果要在包中选择表,则不够。
https://dba.stackexchange.com/questions/68439
复制相似问题