1. 执行DDL报错

在oracle存储过程中,默认是可以直接执行DML和DQL的,但是执行CREATE这种的DDL则需要借助EXECUTE IMMEDIATE ···了,如下备份表语句

  --抄表表备份
SELECT TO_CHAR(SYSDATE,'YYMMDD') INTO V_DQRQ FROM DUAL;
V_CREATESQL := 'CREATE TABLE SF_EBZCB'||V_DQRQ||'_T AS SELECT * FROM SF_EBZCB_T';
EXECUTE IMMEDIATE V_CREATESQL;

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

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

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

GRANT CREATE ANY TABLE TO charge_liny;

执行上面sql显式授权后,在该用户下通过 EXECUTE IMMEDIATE 执行CREATE语句即可成功创建表。

2. 授权当前用户查询其他用户下的表

查询另一用户下的中间库某表中的数据并更新到当前用户中的某个表中,当调用其他用户的表时,需要使用 用户.表名 的格式来区分该表是否是当前用户下的表,这里也需要在被调用的用户下显式的授权给当前用户查询权限。

INSERT INTO SF_EBZCB_T
(YHBH, CNQ, JLBBH, SCBS, BCBS, YL, JSYL)
SELECT YHBH, CNQ, RBXH, QCBL, JZBL, BJYL, SJYL
FROM USER_INFO.RB_INFO
WHERE SYNCSTATE = 0
AND CNQ = SF_DQCNQ_F;

授权语句(在USER_INFO用户下)

GRANT SELECT ANY TABLE TO CHARGE_LINY;

授权其他DML权限

GRANT INSERT ANY TABLE TO CHARGE_LINY;
GRANT UPDATE ANY TABLE TO CHARGE_LINY;
GRANT DELETE ANY TABLE TO CHARGE_LINY;

执行存储过程报错——ora-01031:权限不足的更多相关文章

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

    执行DDL报错 在oracle存储过程中,默认是可以直接执行DML和DQL的,但是执行CREATE这种的DDL则需要借助EXECUTE IMMEDIATE 如: create or replace p ...

  2. MVC仓储执行存储过程报错“未提供该参数”

    今天做的时候出现错误: "过程或函数 'sp_ProcName' 需要参数 '@uid',但未提供该参数. 可是我参数都传了,然后调试也是一样,然后对照参数列表, 后来发现执行的时候还要加入 ...

  3. mysql 执行存储过程报错Prepared statement needs to be re-prepared

    今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...

  4. TFDStoredProc执行sql server的部分存储过程报错,有的是好的。

    TFDStoredProc执行sql server的部分存储过程报错,有的是好的. Invalid character value for cast specification 暂时无解.用fdque ...

  5. Mybatis调用存储过程报错

    Mybatis调用存储过程 贴码 123456 Error querying database. Cause: java.sql.SQLException: User does not have ac ...

  6. Jdbc执行存储过程报数据库事务无法执行的异常

    Jdbc执行存储过程报数据库事务无法执行的异常 环境: Eclipse+Jdk1.7+spring-jdbc-3.0.7+同版本的jdbctemplate+Sqlserver 2012 问题: 一个小 ...

  7. 执行mysqld_safe报错:mysqld does not exist or is not executable

    执行mysqld_safe报错: [root@edu data]# /usr/local/mysql5.7/bin/mysqld_safe --user=mysql160427 12:41:28 my ...

  8. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql

    准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...

  9. selenium执行js报错

    selenium执行js报错 Traceback (most recent call last):    dr.execute_script(js)  File "C:\Python27\l ...

随机推荐

  1. Selenium2+python自动化39-关于面试的题

    前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点.   一.selenium中如何判断元素是否存在? 首先selen ...

  2. UITableView的headerView展开缩放动画

    UITableView的headerView展开缩放动画 效果 源码 https://github.com/YouXianMing/Animations // // HeaderViewTapAnim ...

  3. apache kafka消息服务

    apache kafka中国社区QQ群:162272557 apache kafka参考 http://kafka.apache.org/documentation.html 消息队列分类: 点对点: ...

  4. 【BZOJ】【3489】A simple rmq problem

    KD-Tree(乱搞) Orz zyf教给蒟蒻做法 蒟蒻并不会这题正解……(可持久化树套树?...Orz 对于每个点,我们可以求出pre[i],nex[i],那么询问的答案就是:求max (a[i]) ...

  5. iOS:UIButton按钮的详解

    UIButton的详细介绍: 一.按钮具有的属性: @property(nonatomic,readonly) UIButtonType buttonType;  //按钮形状类型 @property ...

  6. " 初窥 " nginx

    1. 无题 第一次听到Nginx这个词,还是两年前的事儿了,最近常逛CSDN,越来越频繁的接触到这个词汇,今天看了些资料,简单的总结下,作为入门. 2. 背景介绍: Nginx (发音同 engine ...

  7. python环境搭建-Pycharm模块安装方法

    不懂直接看图顺序操作: 方法一: 方法二:

  8. Android之AlarmManager

    Android平台中,Alarm Manager Service控制着闹钟和唤醒功能.和其他系统服务一样,提供了一个辅助管理类-AlarmManager,我们只需要使用AlarmManager即可调用 ...

  9. android 创建通知栏Notification

    ///// 第一步:获取NotificationManager NotificationManager nm = (NotificationManager) getSystemService(Cont ...

  10. Android -- 保存文件

    背景                                                                                             我们以常见 ...