我建了个存储过程,大致如下:
执行时报错: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;数据库存储
执行时报错: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;数据库存储
对于授予删除权限的用户,在pl/sql中可以删除表。
但如果放在存储过程中执行,就会报出权限不足。
解决的方法就是授予所有的权限。