Oracle: почему я не могу выбрать из VIEW, используя,? - PullRequest
0 голосов
/ 11 октября 2018

В базовом продукте, над которым я работаю, произошли некоторые изменения, и некоторые таблицы теперь становятся представлениями, и они больше не работают, потому что на представление нельзя ссылаться с именем схемы впереди.

Например,ниже будет выдано сообщение об ошибке: ORA-00942: таблица или представление не существует

select * from my_schema.my_view;

, в то время как прямой выбор из представления работает нормально

select * from my_view;

В случае таблицыоба сценария выше работают нормально, это просто представление, которое не принимает имя_схемы впереди.

Почему это так?Есть ли достойные обходные пути?

РЕДАКТИРОВАТЬ: выбор выполняется с пользователем my_schema

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Убедитесь, что ваша схема действительно является владельцем, запустив:

Select * from all_objects where object_name = 'my_view';

У меня есть представление stvytro с владельцем baninst1.Существует публичный синоним с таким же именем.Следующие обе работы:

select * from STVYTRO;
select * from baninst1.stvytro;
0 голосов
/ 12 октября 2018

Спасибо всем за помощь, особенно @ mathguy.

В основном проблема заключалась в том, что my_view на самом деле был общедоступным синонимом my_view_r, который был фактическим представлением и был общедоступным, вы не можете вызвать его, используя имя схемывпереди, как я пытался.Например:

select * from my_schema.my_view;

Возможно, для других, которые столкнутся с этой проблемой в будущем, будет полезно обойти эту проблему, создав частный синоним для того же представления (my_view_r), используя имя схемы, как показано ниже:

create synonym my_schema.my_view for my_view_r;

Это единственный способ вызвать синоним с использованием имени схемы.

0 голосов
/ 11 октября 2018

Это грантовый вопрос.

grant all on my_view to my_schema
...