我正在使用 TOAD 在我拥有的模式中创建一个包。我的包使用另一个模式的表。
该包有一个使用游标的过程。当我创建包时,出现编译错误:
正文 509 30 PL/SQL: ORA-00904: : 无效标识符
该错误指向游标的选择正在使用的表,并且该表位于其他架构中。
如果我直接在 TOAD 中运行查询,它会完美运行,我是 Oracle 新手,我不明白为什么会出现此错误。为什么我会收到此错误?
来自“Oracle 数据库高级应用程序开发人员指南,11g 第 2 版 (11.2),E41502-05”中的“6 编码 PL/SQL 子程序和包”部分
要无错误地创建(成功编译子程序或包)需要以下附加权限:
- 必须显式授予子程序或包的所有者对代码主体中引用的所有对象所需的对象权限。
- 所有者无法通过角色获得所需的权限。
您必须已将此表的选择权限授予拥有该包的架构。重要的是,将此权限直接授予包所有者,而不是间接使用角色。使用角色足以让 Toad 直接选择表,但如果您想选择包中的表,则使用角色是不够的。