Oracle-存儲過程-創建sequence的時候報權限不足


引用自:http://www.cnblogs.com/yhoralce/p/6817010.html

PLS-00157: AUTHID only allowed on schema-level programs解決辦法 包體的過程使用調用者權限方法

在包體里寫了一個過程,test執行時報錯,但是如果把該過程單獨拿出來創建一個,就能順利執行。

在沒加上調用者權  authid current_user之前,報錯如下

ORA-01031: insufficient privilegesORA-06512: at "RT_ANN_ODS.ODS_EI_WDNEW", line 1720

查了01031,發現是缺少權限,那么問題就來了,缺少什么權限?

過程能編譯完成,只是測試時候報錯,那么就是缺少調用者權限了。

鎖定了這個問題,就輸入調用者權限即可。

在單一的過程中,調用者權限是這樣用的:

復制代碼
create or replace procedure p_test 
  2  Authid Current_User   ----寫在過程名稱之后,is之前
  3  is 
  4  begin 
  5  execute immediate 'create sequence SEQ_TBS minvalue 10001 maxvalue 99999 start with 10001 increment by 1 cache 10'; 
6 end;
復制代碼

 

於是在包體里的過程名稱后邊加上Authid Current_User ,編譯,報錯如下:

PLS-00157:   AUTHID only allowed on schema-level programs

這句話的意思是說,AUTHID只能用字啊頂級的項目,也就是在包里使用才能生效。

查了下錯誤原因 An AUTHID clause was specified for a subprogram inside a package or type. These clauses are only supported for top-level stored procedures, packages, and types.

大致意思就是authid只能用在頂級的存儲過程、包、類型上,不能用在包或類型的子程序上。

 在包上加入authid,執行正常了。

create or replace package p_test
authid current_user

is
……

 

到此,問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM