2010-06-01 69 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';