Authid current_user的用法
生活随笔
收集整理的這篇文章主要介紹了
Authid current_user的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Authid Current_User:以執行過程的用戶的權限來處理涉及的對象權限.?
這是典型的,數據庫中只創建一個存儲過程,所有用戶都可以使用,但是每個用戶使用的時候 只是用自己的權限權限執行,oracle自己的包很多都這樣的。?
存儲過程默認是用定義者definer 的身份調用的,如果加上AUTHID CURRENT_USER,則用當前登陸的用戶權限調用,如果該過程的調用者(而非定義者)被授與系統權限execute any procedure或是被該過程的定義者grant execute on授權的話,不用這個AUTHID CURRENT_USER子句,調用者照樣可以使用這個過程。?
另外,在Oracle的存儲過程中,如果涉及到操作不同schema下的對象的時候,可以在不同的schema下寫相同的procedure,但這樣帶來的問題是維護和同步帶來了麻煩,可以在procedure中加上authid current_user,來說明procedure中操作的對象是當前連接用戶的對象而并不是procedure所屬用戶下的對象。?
一個例子
引用:
create or replace procedure pr_mv is?begin?
DBMS_MVIEW.REFRESH('mv_xx');?
end;
存儲過程中調用,test存儲過程時會提示:ora-01031 權限不足?
這里是調用者對這個MV的權限可能不夠,
引用:
create or replace procedure pr_mv?authid current_user??is?
begin?
DBMS_MVIEW.REFRESH('mv_xx');?
end;?
這樣就OK
總結
以上是生活随笔為你收集整理的Authid current_user的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DBMS_SQL包使用
- 下一篇: ASCII码对应表chr(9)、chr(