即使已授予適當的訪問權限,但在執行包內的過程時,我的權限不足也會得到足夠的權限。包含alter table的ORACLE程序拋出ORA-01031:權限不足
CREATE OR REPLACE PACKAGE DEVELOPER.DDL_PACKS
AS
PROCEDURE disbcons
AS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE TESTER.ADDRESS DISABLE CONSTRAINT PK4';
END;
END;
GRANT ALTER ON TESTER.ADDRESS TO DEVELOPER;
EXEC developer.ddl.disbcons
編輯: 我試圖在包報頭添加AUTHID DEFINER
。但是,如果執行DEVELOPER
,仍然會出現ORA-01031:insufficient privileges
錯誤。用戶
如果我添加AUTHID CURRENT_USER
並使用相同的DEVELOPER
用戶執行,則執行效果很好。我不明白爲什麼當AUTHID DEFINER
如何在程序包內添加'AUTHID DEFINER'程序? – Vivek
[在存儲過程中立即執行的可能的重複不斷給予不足的特權錯誤](https://stackoverflow.com/questions/996198/execute-immediate-within-a-stored-procedure-keeps-giving-insufficient-priviliges) – lad2025
@Vivek - 如果你的程序在一個包中,你只能在包級設置'AUTHID',而不是單獨的程序。 – kfinity