查看定義屬於**物件權限**範疇。
-- ESCMUSER 建立測試程序
CREATE OR REPLACE PROCEDURE ESCMUSER.PROC_TEST AS
BEGIN DBMS_OUTPUT.PUT_LINE('It is only test'); END;
-- SYSTEM 建立測試用戶
CREATE USER temp IDENTIFIED BY temp;
GRANT CONNECT, RESOURCE TO temp;
GRANT ALL ON PROC_TEST TO temp;
SELECT * FROM USER_TAB_PRIVS_MADE WHERE GRANTEE = 'TEMP';
結果顯示存儲過程**僅有兩種物件權限**:
EXECUTE:執行權限DEBUG:除錯權限
REVOKE ALL ON PROC_TEST FROM temp;GRANT DEBUG ON PROC_TEST TO temp;PLS-00904: insufficient privilege to access objectORA-01031: insufficient privilegesSELECT * FROM ALL_SOURCE WHERE NAME = 'PROC_TEST';
**僅授予 DEBUG 物件權限**即可實現「可查看定義、不可執行、不可修改」的精確控制。
-- 1. 回收現有權限
REVOKE ALL ON schema.proc_name FROM target_user;
-- 2. 僅授予 DEBUG
GRANT DEBUG ON schema.proc_name TO target_user;
SELECT_CATALOG_ROLE 查詢 DBA_SOURCE