今天在某用户下创建一个定时创建表的存储过程,在执行时报如下错误
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at “LTZBYYT.P_EVT_LOG_INFO”, line 15
ORA-06512: at line 1
报了权限不足,其实这里涉及到plsql中的一个权限知识点,
In STORED PROCEDURE, roles are DISABLED. Hence any PRIVILEGES granted by a ROLE to USER, will NOT be in effect. The PRIVILEGES MUST be directly granted to the user.
有两种方式来解决这个问题
1、就是在存储过程中添加 AUTHID current_user
这个所用就是让当前调用procedure的用户可以使用role的权限去执行操作
2、显示赋权
针对这个例子我们就显示赋予create any table的权限。
文章转载自dblife,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。