zoukankan      html  css  js  c++  java
  • oracle使用存储过程用execute immediateSQL报ORA01031错误问题

    normal用户登录时,在执行到 execute immediate;时会出错:报:ORA-01031insufficient privileges权限不足 错误,用sysDBA登录时则不会出错。

     

    1 create or replace procedure lucyyoko.proc1 
    2 is  
    3 begin
    4   execute immediate 'create table lucyyoko.prco1(id int)';
    5 end proc1;

     

    解决办法:is 加上 Authid Current_User

    1 create or replace procedure lucyyoko.proc1 
    2 Authid Current_User is  --加上Authid Current_User即可
    3 begin
    4   execute immediate 'create table lucyyoko.prco1(id int)';
    5 end proc1;

    原理:

    使用PLSQL Develeper可以发现Oracle对用户的授权分为五方面的权限,即:

    一般权限:用于登录数据库

    对象权限:用于给用户针对对象使用进行授权,以上的问题就是因为没有给对象授权造成。

    角色权限:即操纵数据库的权限。

    系统权限:管理oracle数据库运行的权限。

    空间限额:限制用户空间大小。

     

    给用户授权后,可不加Authid Current_User

     grant   

      CREATE SESSION,

        CREATE ANY TABLE,

        CREATE ANY VIEW ,

        CREATE ANY INDEX,

        CREATE ANY PROCEDURE,

        CREATE ANY TABLE

         ALTER ANY TABLE,

        ALTER ANY PROCEDURE, 

      DROP ANY TABLE,

        DROP ANY VIEW,

        DROP ANY INDEX,

        DROP ANY PROCEDURE,

      SELECT ANY TABLE,

        INSERT ANY TABLE,

        UPDATE ANY TABLE,

        DELETE ANY TABLE

    to users;

     

  • 相关阅读:
    进程通信之信号通信
    分数化小数
    台湾大学公开课《概率》第五周一道不会作的作业题 ,一种看不懂的解法
    网络子系统53_ip协议分片重组_内存阈值
    Centos 6.3 Realtek Audio Driver Compile
    I.MX6 PHY fixup 调用流程 hacking
    I.MX6 AR8031 寄存器操作
    I.MX6 ethtool 移植
    I.MX6 U-Boot ping网络
    Android tcpdump 使用
  • 原文地址:https://www.cnblogs.com/lucyawei/p/2946211.html
Copyright © 2011-2022 走看看