Oracle: получить список функций для пользователя - PullRequest
5 голосов
/ 01 июня 2010

Как получить список всех функций для конкретного пользователя?

РЕДАКТИРОВАТЬ для уточнения вопроса:

Когда (как USER1) я запускаю

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

он не возвращает все функции, которые, как мне известно, принадлежат USER2. Я подозреваю, что он только возвращает те функции, которые USER1 может просматривать / выполнять.

Это подозрение верно?

Кроме того, если это правда, есть ли способ обойти это?

Ответы [ 3 ]

4 голосов
/ 01 июня 2010

Да, ваши подозрения верны. В представлении ALL_OBJECTS будут перечислены только те элементы, к которым у текущего пользователя есть доступ.

Если вы можете войти как USER2, вы можете запросить USER_OBJECTS от имени этого пользователя, чтобы увидеть все объекты, принадлежащие этому пользователю.

Если вы можете войти в систему как SYSTEM, то у вас будет доступ ко всем объектам независимо от владельца, поэтому список, предоставленный ALL_OBJECTS (или DBA_OBJECTS), будет полным.

Если вы не можете войти в систему как пользователь, имеющий доступ ко всем объектам USER2, вы не можете перечислить все объекты USER2.

3 голосов
/ 01 июня 2010

Если вы имеете в виду список функций, принадлежащих конкретному пользователю, то:

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

Это вернет только автономные функции, а не процедуры или функции в пакетах, которые принадлежат схеме WHOEVER.

Чтобы получить список всех функций, к которым у текущего пользователя есть доступ:

select object_name
from   all_objects
where  object_type = 'FUNCTION';
0 голосов
/ 31 января 2015

выберите * из dba_objects где владелец = 'USER2' и object_type = 'FUNCTION';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...