Как исправить ошибку ORA-00904 в Oracle?

Здравствуйте! У меня возникла ошибка с получением привилегий из схемы Oracle. Ошибка несёт неясный характер для меня, так как в точности идентичный запрос в одном проекте ошибку даёт, а в другом - нет.
Первый проект написан чисто на Perl без применения каких-либо фреймворков, второй - находится на том же сервере, но написан с применением Mojolicious::Lite. Для подключения к базе данных использую DBI.

Вот, собственно, и сам запрос:
SELECT privilege FROM user_tab_privs WHERE owner = $schema AND grantee = $username AND table_name = $table

Ошибку выдаёт следующую:
DBD::Oracle::db prepare failed: ORA-00904: "CITY_V": invalid identifier (DBD ERROR: error possibly near <*> indicator at char 170 in.

Передаваыме значения 100% верные. В схеме имеется view под названием CITY_V. Привилегии тоже прописаны верно. Это легко заметить, если оставить запрос в таком виде:
SELECT privilege FROM user_tab_privs

Этот запрос обработается безошибочно.

Буду благодарен за информацию.
  • Вопрос задан
  • 37531 просмотр
Решения вопроса 2
@Oraclist
ORA-00904 часто отражает отсутствие доступа к объекту.
Возможно, объекта нет вообще.
1. Проверить наличие объекта.
2. Проверить, что обращаемся к нужному объекту правильно (имя схемы и имя объекта корректны и полны)
3. Проверить наличие прав доступа на выбор для этого объекта и пользователя, выполняющего запрос.
4. Для представления: пользователю-владельцу представления должны быть выданы права на доступ к таблицам из представления с опцией WITH GRANT OPTION.
Ответ написан
Комментировать
Lorien_Elf
@Lorien_Elf
Keep calm and drop database
Видимо CITY_V передается не заключенным в одинарные кавычки. Должно быть что-то типа

SELECT privilege FROM user_tab_privs WHERE owner = '$schema' AND grantee = '$username' AND table_name = '$table';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы