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. Kali Linux下安装配置ProFTPD实例

    1.安装ProFTPD 在ftp://ftp.proftpd.org/下能够找到官方公布的各个ProFTPD版本号,本人使用ftp://ftp.proftpd.org/historic/source/ ...

  2. easyDarwin--开源流媒体实现

    EasyDarwin 是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒 ...

  3. Myeclipse设置快捷键

    快捷键中把我们习惯性使用的Alt+/进行代码自动补齐的快捷键改为了ctrl+空格,大家知道这是切换中英文输入法的键,所以需要更改这个快捷键, 1.选择MyEclipse6.0菜单栏中的Window-& ...

  4. DWZ学习记录--关闭loading效果

    修改文件:jquery-1.7.1.js 查找内容:7142行 ajaxSettings: { 修改内容:global: true=>global: false修改目的:关闭loading效果

  5. 简明python教程 --C++程序员的视角(七):异常

    当你的程序中出现某些 异常的 状况的时候,异常就发生了.例如,当你想要读某个文件的时候,而那个文件不存在.或者在程序运行的时候,你不小心把它删除了.上述这些情况可以使用异常来处理. 假如你的程序中有一 ...

  6. Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信

    1.Jni不在赘述.翻看前面博客 2.直接上代码 1)Java层,直接加在AppActivity.java中 public class AppActivity extends Cocos2dxActi ...

  7. 基于at91rm9200的i2c分析(DS1307实时时钟芯片)

    board-ek.c 构造i2c_board_info结构体 static struct i2c_board_info __initdata ek_i2c_devices[] = {     {    ...

  8. 【PAT Advanced Level】1011. World Cup Betting (20)

    简单模拟题,遍历一遍即可.考察输入输出. #include <iostream> #include <string> #include <stdio.h> #inc ...

  9. 如何处理wordpress首页不显示指定分类文章

    如何实现wordpress首页不显示指定分类文章,要实现这一步,首先必须找到需要屏蔽的该目录的id,那么如何查看wordpress的分类id呢?有两种方法: 通过wordpress后台查看分类的ID ...

  10. CREATE DATABASE failed

    由于环境需要, 故修改SQL Server 2012的默认的数据库的数据文件和日志文件的位置. 如下: 创建数据库, 遭遇报错. 错误信息: A file activation error occur ...