首页 > 数据库技术 > 详细

Oracle执行存储过程报错——ora-01031:权限不足

时间:2018-10-22 19:15:37      阅读:149      评论:0      收藏:0      [点我收藏+]

执行DDL报错

在oracle存储过程中,默认是可以直接执行DML和DQL的,但是执行CREATE这种的DDL则需要借助EXECUTE IMMEDIATE 

如:

create or replace procedure CREATE_TABLE(CREATE_SQL VARCHAR2) IS
BEGIN
  EXECUTE IMMEDIATE CREATE_SQL; --‘CREATE TABLE T_CREATE_TABLE_1(COLUMN_1 VARCHAR2(50))‘
end CREATE_TABLE;

当执行该语句时,提示 ORA-01031: 权限不足。该用户已赋予DBA权限。

原因:CREATE TABLE想使用CREATE ANY TABLE权限,而CREATE ANY TABLE权限来自DBA角色,默认情况下,虽然在会话环境中可见,但在存储过程中不可见(无效)。

即:ORACLE默认为定义者权限,定义者权限在存储过程中ROLE无效,需要显式授权

GRANT CREATE ANY TABLE TO shfdfm
shfdfm:用户名

Oracle执行存储过程报错——ora-01031:权限不足

原文:https://www.cnblogs.com/BobXie85/p/9831532.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!