Oracle:获取用户的功能列表

时间:2010-06-01 14:14:52

标签: oracle

如何获取特定用户的所有功能列表?

编辑问题澄清:

当我(作为USER1)运行时

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

它不会返回我知道USER2拥有的所有函数。我怀疑它只返回允许USER1查看/执行的那些函数。

怀疑是否正确?

另外,如果这是真的,有办法解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

是的,你的怀疑是正确的。 ALL_OBJECTS视图仅列出当前用户有权访问的项目。

如果您可以以USER2身份登录,那么您可以将USER_OBJECTS作为该用户进行查询,以查看该用户拥有的所有对象。

如果您可以以SYSTEM身份登录,那么无论所有者如何,您都可以访问所有对象,因此ALL_OBJECTS(或DBA_OBJECTS)提供的列表将完整。

如果您无法以有权访问所有USER2对象的用户身份登录,则无法列出所有USER2的对象。

答案 1 :(得分:3)

如果您指的是属于特定用户的功能列表,则:

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

这将仅返回属于模式'WHOEVER'的独立函数,而不返回包中的过程或函数。

获取当前用户可以访问的所有功能列表:

select object_name
from   all_objects
where  object_type = 'FUNCTION';

答案 2 :(得分:0)

从dba_objects中选择* 所有者=' USER2' 和object_type ='功能';