用户具有dba权限,但在执行一个存储过程时提示“ORA-01031: 权限不足”,该过程中存在动态SQL“execute immediate。。。”正是这里报的错误。
1、ORACLE默认为定义者权限,定义者权限在存储过程中ROLE无效,需要显示授权。
2、如果使用AUTHID
解决办法:
方法1:就这个存储过程来说,CREATE
所以根据上面的第一条规则,可以显示地将CREATE
GRANT
方法2:采用调用者权限,由于过程中使用动态SQL,所以可以避开编译时的检查,但在运行时DBA角色生效,即
CREATE
(RTN_ID