项目需要在存储过程中首先判断表是否存在,如果不存在,则创建表。
按照普通的存储过程编写完成后,执行却报权限不足(幸好本地跑了一遍,免得被测试屌( ̄ェ ̄;))
网上的解决思路有2中:
1、给当前用户增大权限
2、在存储过程中添加权限说明
我采用的第二种方式:
CREATE OR REPLACE PROCEDURE DATA_UPDATE_SQL
authid current_user
AS
num_2 NUMBER;
v_sql VARCHAR2(1000);
BEGIN
SELECT count(1) into num_2 FROM USER_TABLES WHERE TABLE_NAME = 'TABLE_1';
if num_2 = 0
then
v_sql:= 'create table TABLE_1
(
。。。。省略
)';
execute immediate v_sql;
end if;
COMMIT ;
END;
重点就是在as前面,过程名后面加上 authid current_user就可以了