我建了个存储过程,大致如下:
执行时报错:ORA-01031: insufficient privileges
对用户赋上create table 权限后,问题解决,但是在另外一个数据库中加上create table 权限后还是报错,还需加上drop any table的权限问题才解决,请教下有谁知道这是什么原理?跟数据库设置有关系?create or replace procedure sp_delete(vc_table_name_p in varchar2, vc_condition_p   in varchar2 ) is
begin
        execute immediate 'create table temptable as select * from ' || vc_table_name || ' where not (' || vc_condition_p || ')';
        execute immediate 'truncate table ' || vc_table_name;
        execute immediate 'insert into ' || vc_table_name || ' select * from temptable';
        execute immediate 'drop table temptable';
end sp_delete;数据库存储

解决方案 »

  1.   

    存储过程与权限问题,其中role不能立马生效
      

  2.   

    我知道执行存储过程有些角色权限不起作用,但照理说在存储过程中应该也可以drop自己建的表啊,只要有create table的权限就可以了,为什么有些环境一定要加drop any table权限呢
      

  3.   

    这点很神奇的,我以前也遇到过。
    对于授予删除权限的用户,在pl/sql中可以删除表。
    但如果放在存储过程中执行,就会报出权限不足。
    解决的方法就是授予所有的权限。