Oracle
從包中刪除視圖
我有一個使用 DBA 角色定義的名為 DEPLOY 的使用者。
通過 SQL Developer 登錄時,使用者可以按如下方式刪除視圖:
DROP VIEW APP_USER.VIEW_NAME_VW CASCADE CONSTRAINTS
如果我將相同的語句放在 DEPLOY 擁有的包中,那麼它會失敗並顯示“ORA-00942:表或視圖不存在”。
因此,似乎通過 DBA 角色授予的權限不會擴展到包執行的程式碼。
它是否正確?
通過任何角色授予的權限,而不僅僅是 DBA 角色,在定義者權限儲存過程中不可用。假設您需要定義者的權限程序,您需要
deploy
通過直接授予授予使用者刪除角色的權限。最有可能在這種情況下,因為您可以擁有deploy
DBA 角色grant drop any view to deploy;