Я пытаюсь создать представление в Oracle с помощью Toad и получаю таблицу ошибок или представление не существует.
Но когда я запускаю запрос сам по себе, он выполняется успешно. Какова возможная причина?
CREATE OR REPLACE FORCE VIEW MGR.V_INDEX_PERFORMANCE
(
INDEX_ID ,
INDEX_NAME,
MTD,
YTD
)
BEQUEATH DEFINER
AS
SELECT "INDEX_ID" ,
"INDEX_NAME",
"MTD",
"YTD" from MIS_PERMAL.MV_INDEX_PERFORMANCE
where INDEX_ID in (1045, 2005) AND FIELD_CODE = 'TR' AND CCY_CODE IN ('D', 'USD') order by INDEX_ID, price_date desc;
Это разрешения, а точнее то, как они предоставляются. Пользователь MGR имеет право запрашивать базовую таблицу, которая исходит от роли. Oracle не позволяет нам создавать представления или процедуры, используя привилегии роли. Именно так работает модель безопасности.
Решение состоит в том, чтобы попросить владельца таблицы MIS_PERMAL (или опытного пользователя, такого как администратор баз данных) предоставить привилегию SELECT для MV_INDEX_PERFORMAMCE непосредственно MGR.
Вы выполняете запрос самостоятельно как пользователь
MGR
? Владелец представления должен иметь право выбирать таблицы в представлении.