Oracle 存储过程访问其他模式

Posted

技术标签:

【中文标题】Oracle 存储过程访问其他模式【英文标题】:Oracle stored procedure access to other schemas 【发布时间】:2021-08-04 19:37:38 【问题描述】:

感谢您阅读此问题。

我正在使用 Oracle 11g。通过我的用户,我可以运行此查询并可以访问所有带有视图的模式:

SELECT DISTINCT OWNER 
FROM ALL_OBJECTS 
WHERE OBJECT_TYPE = 'VIEW'

但是,当我在架构中与我的用户一起创建存储过程并将此查询放入其中时,我无法访问其他用户的架构。 我想存储过程需要以某种方式被授予对其他模式的访问权限。

感谢任何帮助。

亲切的问候,

彼得纳克

【问题讨论】:

【参考方案1】:

存储过程和其他 PL/SQL 构造不能使用通过角色授予的权限。对象权限——比如对表的“选择”或另一个模式中的视图——必须直接授予用户。这就是为什么您可以直接运行查询(使用用户基于角色的权限)而不是作为 PL/SQL 过程的一部分的原因。

如果您确实需要将此查询包含在存储过程中,那么您必须与您的 DBA 一起确定需要将哪些对象权限直接授予您的用户帐户。

【讨论】:

以上是关于Oracle 存储过程访问其他模式的主要内容,如果未能解决你的问题,请参考以下文章

访问Oracle存储过程中的另一个用户表

Oracle:搜索所有存储的过程/触发器/其他数据库代码?

Oracle 锁

导出 Oracle 数据库,将其导入其他用户,存储过程不起作用

Oracle存储过程的语法分析

oracle数据库中存储过程plsql能查但java查询不到,其他表查询都可以,而且上周该存储过程也是可以的。