2010-06-01 55 views
4

如何獲取特定用戶的所有功能列表?Oracle:獲取用戶的功能列表

編輯問題澄清:

當(爲USER1)我跑

select * from all_objects 
where owner = 'USER2' 
and object_type = 'FUNCTION'; 

它不會返回所有我知道USER2擁有的功能。我懷疑它只返回允許USER1查看/執行的那些函數。

懷疑是否正確?

另外,如果這是真的,有沒有辦法解決這個問題?

+0

「特定用戶的功能*」是什麼意思?函數擁有?可以通過? – 2010-06-01 14:29:50

+0

我的意思是「擁有」 – 2010-06-01 14:31:07

+0

您是否可以修改標題以真正反映您實際要求的內容?此外,還有一個完整的編輯歷史;你不需要寫「編輯」。只要解決你的問題要清楚。 – 2010-06-01 20:12:55

回答

4

是的,你的懷疑是正確的。 ALL_OBJECTS視圖將只列出當前用戶有權訪問的項目。

如果您可以以USER2的身份登錄,那麼您可以以該用戶的身份查詢USER_OBJECTS以查看該用戶擁有的所有對象。

如果您可以以SYSTEM身份登錄,那麼無論擁有者是誰都可以訪問所有對象,因此ALL_OBJECTS(或DBA_OBJECTS)提供的列表將會完成。

如果您無法以可以訪問所有USER2對象的用戶身份登錄,則無法列出所有USER2的對象。

3

如果你指的功能列表中屬於一個特定的用戶,則:

select object_name 
from all_objects 
where owner = 'WHOEVER' 
and object_type = 'FUNCTION'; 

這將返回唯一獨立的功能,在包裝沒有程序或功能,屬於架構「誰」 。

要獲得所有功能列表,當前用戶可以訪問:

select object_name 
from all_objects 
where object_type = 'FUNCTION'; 
+0

我跑這個。一些問題:首先,應該是'object_type'。此外,這似乎並沒有列出所有這些。這隻會列出授予我用於select的用戶執行的那些功能嗎? – 2010-06-01 14:35:31

+0

對不起,我更正了我的SQL(我應該在發佈之前對它進行測試!)這僅列出屬於模式「WHOEVER」的函數。要從任何模式查看用戶可用的所有功能,請省略「owner ='who've''」謂詞。 – 2010-06-01 14:44:34

+0

嗯。我以前的評論不是很清楚。我已經編輯了更多細節。感謝您對此的幫助... – 2010-06-01 15:13:52

0

select * from dba_objects where owner ='USER2' and object_type ='FUNCTION';