首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 跨 Schema 呼叫預存程序:GRANT EXECUTE 權限設定

     編輯:Oracle 資料庫基礎

情境

資料庫有兩個使用者 ZD 與 SMS。ZD 需呼叫 SMS 底下的預存程序 PROC_DOSMS。

解決方法

以 SMS 帳號登入,授予 EXECUTE 權限給 ZD:

CONN sms/password
GRANT EXECUTE ON proc_DOSms TO zd;

驗證呼叫

CONN zd/password
EXEC sms.proc_DOSms;  -- 或 CALL sms.proc_DOSms();

補充說明

  • 若需讓所有使用者可呼叫,可授予 PUBLIC:GRANT EXECUTE ON proc_DOSms TO PUBLIC;(生產環境謹慎使用)。
  • 預存程序內若參考其他物件(表、視圖、Sequence),SMS 亦需具備該物件的權限(SELECT、INSERT 等),且呼叫者 ZD 不需額外授權(定義者權限模式預設)。
  • 若程序以 AUTHID CURRENT_USER 定義(執行者權限),則呼叫者需具備程序內參考物件的直接權限。
  • 可查詢 USER_TAB_PRIVS 或 DBA_TAB_PRIVS 確認權限授予狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved