oracle執行存儲過程出錯
create or replace procedure test1as sql1 varchar2(4000);no_result exception;begin sql1:='update oa.test set id =1'; execute immediate sql1; commit;exception when no_result then dbms_output.put_line('error');end;
這個存儲過程用來更新用來用戶一個表,然后OANEWPLATDJ登錄執行時報
ORA-01031:權限不足
ORA-06512:在"OANEWPLATDJ.TEST1",line8
ORA-06512:在line 3
百度之,
有兩種方法可以解決:一、創建存儲過程時在存儲過程名后增加 Authid Current_User 如
create or replace procedure tt_senquence Authid Current_User is ...
二、顯示授予該用戶相關系統權限 如:
grant update any table to &user_name;
grant insesrt any table to &user_name;
兩種方法各有利弊;
第一種方法不用顯示授於各種系統權限,比較方便。
但如果在job中調用該存儲過程則還會報ORA-01031: 權限不足的錯誤。
第二種方法:雖然麻煩,但可以解決job中調用存儲過程的問題。