Не получается создать представление

Alibek B.
Дата: 23.09.2015 14:46:27
Есть примерно такой запрос:
select rownum, ...
from (select distinct field1 from scheme2.table ) ids
join ...
where ...


Сам по себе запрос выполняется успешно.
Но когда я его пытаюсь сохранить как представление, получаю ошибку ORA-01031 "привилегий недостаточно".
Не подскажите, о чем идет речь?
На таблицу scheme2.table предоставлены все права.
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
andreymx
Дата: 23.09.2015 14:48:04
не хватает прав напрямую и + with grant option

а вообще, писать в представлениях group by, rownum и прочие order by - в общем случае очень плохо
andreymx
Дата: 23.09.2015 14:48:36
andreymx
не хватает прав напрямую и + with grant option
with grant option не обязательно
Alibek B.
Дата: 23.09.2015 14:59:46
Представление — это источник данных для отчета, поэтому и group by с order by.
rownum можно и убрать, но помоему он мало влияет на производительность, запрос практически одинаково отрабатывает что с ним, что без него.

Что означает "не хватает прав напрямую"?
Запрос выполняется под пользователем user1, и в схеме этого же пользователя я пытаюсь создать представление.
user1 входит в роль role1.
В схеме scheme2 выполнялась команда GRANT ALL ON SCHEME2.TABLE TO ROLE1.
У меня несколько похожих представлений (использующих таблицы из схемы SCHEME2), но проблема только с этим представлением.
Вот полный скрипт таблицы SCHEME2.TABLE:
CREATE TABLE BONUS_LIST
(
  BONUS_ID        NUMBER                        NOT NULL,
  BONUS_TYPE_ID   NUMBER                        NOT NULL,
  BONUS_STATE_ID  NUMBER                        NOT NULL,
  BONUS_DATE      DATE                          NOT NULL,
  IS_DELETED      NUMBER(1)                     NOT NULL,
  DESCRIPTION     VARCHAR2(200 CHAR)            NOT NULL,
  ACCIDENT_ID     NUMBER,
  EXEC_DATE       DATE
);

CREATE UNIQUE INDEX BONUS_LIST_PK ON BONUS_LIST (BONUS_ID);

ALTER TABLE BONUS_LIST ADD (
  CONSTRAINT BONUS_LIST_PK
  PRIMARY KEY
  (BONUS_ID)
  USING INDEX BONUS_LIST_PK);

ALTER TABLE BONUS_LIST ADD (
  CONSTRAINT BONUS_LIST_R01 
  FOREIGN KEY (BONUS_TYPE_ID) 
  REFERENCES BONUS_TYPE (BONUS_TYPE_ID),
  CONSTRAINT BONUS_LIST_R02 
  FOREIGN KEY (BONUS_STATE_ID) 
  REFERENCES BONUS_STATE (BONUS_STATE_ID));

GRANT ALTER, DELETE, INSERT, SELECT, UPDATE, ON COMMIT REFRESH, QUERY REWRITE, DEBUG, FLASHBACK ON BONUS_LIST TO BILLING_ROLE;
Добрый Э - Эх
Дата: 23.09.2015 15:08:35
Alibek B.,
Уже и Ф.А.К. по этому поводу написали, но все равно каждый ламер считает, что он умнее всех и его проблема - уникальна.

F.A.Q. - 7. Вопрос. Почему в своем pl/sql-коде (представлении/процедуре/триггере/пакете) не удается использовать чужой объект - выдается ошибка ORA-00942 table or view does not exist - хотя в sql-запросе или в анонимном pl/sql/блоке все нормально, обращение к объекту другого пользователя проходит без проблем?
Alibek B.
Дата: 23.09.2015 15:38:33
Да, вопрос решен.