一、使用调用者权限
在存储过程开头加入 authid current_user
create or replace procedure prc_test1
-- authid current_user
as
v_sql_str varchar2(4000);
v_count number := 0 ;
v_i number := 0 ;
v_j number := 0 ;
begin
v_sql_str := 'create or replace view view_test1
as
select * from dba_tab_cols';
execute immediate v_sql_str;
exception
when others then
dbms_output.put_line('code:' || sqlcode);
dbms_output.put_line('errm:' || sqlerrm);
dbms_output.put_line('lineno:' || dbms_utility.format_error_backtrace);
end;
二、显式授权
主要是因为dbms_job里不能用上面那个方法
v_sql_str := 'grant create view to c##admin';
execute immediate v_sql_str;
三、使用dbms_scheduler
https://blog.csdn.net/WuLex/article/details/81868916
这个跟dbms_job比,可以使用调用者权限