如何获取特定用户的所有功能列表?
编辑问题澄清:
当我(作为USER1)运行时
select * from all_objects
where owner = 'USER2'
and object_type = 'FUNCTION';
它不会返回我知道USER2拥有的所有函数。我怀疑它只返回允许USER1查看/执行的那些函数。
怀疑是否正确?
另外,如果这是真的,有办法解决这个问题吗?
答案 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 ='功能';