首页 文章

AUTHID DEFINER param不起作用

提问于
浏览
2

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

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

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

谢谢 .

1 回答

  • 0

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

    但是在执行PL / SQL代码时,应用不同的权限,因为 roles are disabled in procedures ,请参阅Oracle documentation .

    因此,您需要向USER A显式授予CREATE TABLE特权 .

相关问题