1

我需要用户无权访问另一个方案,但存储过程可以访问不同的模式。

4

2 回答 2

5

你所描述的是不可能的。

如果b.procedure可以在 上选择、插入、更新或删除a.table,那么任何登录的人b也可以这样做。

你应该做的是创建过程a.proceduregrant execute on a.procedure to b.

于 2012-10-29T11:16:08.043 回答
3

权限不能授予对象,只能授予用户或角色。

实现这种控制粒度的方法是让其他模式定义在其自己的表上运行的过程。然后它授予其他用户执行该过程。这是过程的一个有价值的用例,封装了模式对象上的操作。

控制 PL/SQL 对象权限的机制是 AUTHID。有两个选项,CURRENT_USER 和 DEFINER。在这种情况下,您要使用定义者的权限AUTHID DEFINER(这是默认设置)。 了解更多

于 2012-10-29T12:07:49.380 回答