我需要用户无权访问其他方案,但存储过程可以访问其他方案。
答案 0 :(得分:5)
你所描述的是不可能的。
如果b.procedure
可以在a.table
上选择,插入,更新或删除,那么以b
身份登录的任何人都可以这样做。
您应该做的是创建程序a.procedure
和grant execute on a.procedure to b
。
答案 1 :(得分:3)
不能将权限授予对象,仅授予用户或角色。
实现此粒度控制的方法是让另一个模式定义在其自己的表上运行的过程。然后它将该过程的执行授予其他用户。这是程序的一个有价值的用例,它封装了对模式对象的操作。
控制PL / SQL对象中的权限的机制是AUTHID。有两个选项,CURRENT_USER和DEFINER。在这种情况下,您希望使用定义者的权限AUTHID DEFINER
(这是默认值)。 Find out more。