【发布时间】:2012-10-18 16:48:01
【问题描述】:
我需要用户无权访问其他方案,但存储过程可以访问不同的方案。
【问题讨论】:
标签: oracle plsql oracle10g schema grant
我需要用户无权访问其他方案,但存储过程可以访问不同的方案。
【问题讨论】:
标签: oracle plsql oracle10g schema grant
你所描述的是不可能的。
如果b.procedure 可以在a.table 上选择、插入、更新或删除,那么任何以b 身份登录的人也可以这样做。
您应该做的是创建过程a.procedure 和grant execute on a.procedure to b。
【讨论】:
权限不能授予对象,只能授予用户或角色。
实现这种控制粒度的方法是让其他模式定义在其自己的表上运行的过程。然后它授予其他用户执行该过程。这是过程的一个有价值的用例,封装了模式对象上的操作。
在 PL/SQL 对象中控制权限的机制是 AUTHID。有两个选项,CURRENT_USER 和 DEFINER。在这种情况下,您要使用定义者的权限AUTHID DEFINER(这是默认设置)。 Find out more。
【讨论】: