Одной из ловушек в Oracle является тот факт, что иногда вы можете выбирать из таблицы, если вы запускаете запрос в SQLplus, но вы не можете этого делать при запуске запроса из хранимой процедуры. Чтобы выполнить запрос из хранимой процедуры, вам нужен прямой грант для объекта, а не грант, полученный с помощью роли.
Если я вижу таблицу в представлении all_tables, как я могу узнать, вижу ли я эту таблицу из-за прямого предоставления или из-за предоставления роли?