Посмотрите на определение процедуры.Если это что-то вроде PROCEDURE a AUTHID CURRENT_USER
, то оно будет выполняться с разрешениями текущего пользователя и разрешением имени .Если в процедуре используются представления, в которых учитываются пользовательские привилегии (например, user_objects
), это может объяснить другой результат.
Ответ на комментарий: Вы ошибаетесь.Представьте, что вы пишете процедуру, которая возвращает object_name
первой строки из user_objects
.Эта процедура принадлежит schema_owner
, и schema_invoker
имеет разрешение на ее выполнение.Если процедура определена без AUTHID CURRENT_USER
, она вернет имя объекта для объекта в схеме schema_owner
.Та же процедура с AUTHID CURRENT_USER
вернет имя объекта из схемы schema_invoker
.Это не имеет ничего общего с привилегиями выполнения.
Я не знаю, что это источник вашей проблемы, но это хороший кандидат, и его легко проверить (просто посмотрите на определение процедуры, найденное в пакетеспецификация).