回答
存儲過程XYZ所有權的權利編寫SQL命令,我不知道,我明白你的「所有權的權利」的意思。
如果用戶B擁有一個存儲過程,用戶B可以授予用戶運行存儲過程
GRANT EXECUTE ON b.procedure_name TO a
然後,用戶A將使用完全限定名調用過程A權限,即
BEGIN
b.procedure_name(<<list of parameters>>);
END;
或者,用戶A可以創建同義詞,以避免必須使用完全限定的過程名稱。
CREATE SYNONYM procedure_name FOR b.procedure_name;
BEGIN
procedure_name(<<list of parameters>>);
END;
你不能做我認爲你要做的事。
您可以授予程序的唯一權限是EXECUTE和DEBUG。
如果您想允許用戶B在用戶A架構中創建過程,那麼用戶B必須具有CREATE ANY PROCEDURE特權。更改任何程序和刪除任何程序是爲用戶B更改或刪除用戶A程序所需的其他適用權限。所有權限都是廣泛的,因爲它不會將用戶B限制爲任何特定模式。如果授予這些權限,用戶B應該高度信任。
編輯:
賈斯汀提到的,給予執行權,一種通過B所擁有的程序的方式:
GRANT EXECUTE ON b.procedure_name TO a;
包和Oracle存儲過程使用的權利默認執行包/程序OWNER,而不是當前登錄的用戶。
因此,如果您調用一個創建用戶的包,例如它的包所有者,而不是需要創建用戶特權的調用用戶。調用者只需要在包上具有執行權限。
如果您希望該包應使用主叫用戶的權限下運行,創造了包,那麼當你需要指定AUTHID CURRENT_USER
Oracle文檔「祈求權利VS定義者權限」提供了更多信息http://docs.oracle.com/cd/A97630_01/appdev.920/a96624/08_subs.htm#18575
希望這有助於。
SQL> grant create any procedure to testdb;
這是一個命令,當我們要給「testdb」用戶創建特權時。
在你的DBA帳號,給USERB使用撥款,以創建一個過程的權利grant create any procedure to USERB
的過程看起來
CREATE OR REPLACE PROCEDURE USERB.USERB_PROCEDURE
--Must add the line below
AUTHID CURRENT_USER AS
BEGIN
--DO SOMETHING HERE
END
END
GRANT EXECUTE ON USERB.USERB_PROCEDURE TO USERA
我知道這是一個非常古老的問題,但我我希望我能把它打碎一點。
- 1. 向用戶授予存儲過程的權限
- 2. 授予存儲過程的權限
- 3. Oracle - 授予用戶權限
- 4. 只授予用戶的存儲過程權限
- 5. 授予用戶對存儲過程的權限
- 6. 授予權限存儲過程
- 7. 哪一項權利授予用戶在SQL 2008中授予他人權利的權利?
- 8. 授予Oracle授予權限
- 9. Oracle過程授予特權列表
- 10. 從一個用戶向另一個用戶授予許可
- 11. 從另一個存儲過程調用存儲過程oracle
- 12. 授予用戶授予其他用戶的授權
- 13. 授予SQL存儲過程權限執行權限
- 14. 在Oracle存儲過程中訪問另一個用戶的表
- 15. 在Oracle中,從過程內向用戶授予角色
- 16. 授予數據庫中所有存儲過程的用戶執行權限?
- 17. t-sql創建用戶並授予執行存儲過程的權限
- 18. 在SQL Server 2000中授予對存儲過程的選擇權
- 19. 如何授予在Oracle中授予權限的權限
- 20. 在哪裏存儲表格以授予Oracle 10g中新用戶的權限
- 21. 我如何向用戶授予權限?
- 22. 如何向用戶授予權限
- 23. 在Oracle模式上向用戶授予所有特權
- 24. 是否授予ALTER暗示授予執行一個SQL Server存儲過程
- 25. 充分利用存儲過程中的另一個存儲過程
- 26. 權限授予隊列到另一個模式在Oracle
- 27. Oracle自動授予權限
- 28. Oracle權限授予SQl Plus
- 29. Oracle授予執行權限
- 30. 執行Oracle存儲過程作爲另一個用戶
+1一種比CREATE ANY PROCEDURE更爲激烈的方法,但也有缺陷是給用戶B使用用戶B密碼給用戶A,允許他們以該用戶身份登錄。這聽起來像你想授予模式級特權,但這些特權在Oracle中不可用。 – 2010-11-29 19:06:41