AUTHID DEFINER param不起作用

时间:2016-07-27 09:30:05

标签: oracle plsql

我在USER A模式上创建了一个带有AUTHID DEFINER参数的过程。如果某个表不存在,则此过程会创建一些表,稍后它会在所有表中插入操作。

此参数在插入操作中正常工作,但在create table操作中不起作用。我从另一个名为USER B的用户调用该过程,因此理论上该参数应允许USER B执行USER A的过程并在USER A模式中创建表,然后插入所有数据。

当我调用它时,任何人都知道为什么该过程会返回一个不足的权限错误?我试图直接在USER A架构中执行“create table”语句,它可以工作......

感谢。

1 个答案:

答案 0 :(得分:0)

USER A可能已授予RESOURCE角色,这使您可以手动创建表 - 这就是您能够直接在USER A架构中执行“create table”语句的原因。

但是,在执行PL / SQL代码时,应用了不同的权限,因为在程序中禁用了角色,请参阅Oracle documentation

因此,您需要将CREATE TABLE权限显式授予USER A。