Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не получается создать представление  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
Есть примерно такой запрос:
select rownum, ...
from (select distinct field1 from scheme2.table ) ids
join ...
where ...


Сам по себе запрос выполняется успешно.
Но когда я его пытаюсь сохранить как представление, получаю ошибку ORA-01031 "привилегий недостаточно".
Не подскажите, о чем идет речь?
На таблицу scheme2.table предоставлены все права.
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
23 сен 15, 14:46    [18185486]     Ответить | Цитировать Сообщить модератору
 Re: Не получается создать представление  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
не хватает прав напрямую и + with grant option

а вообще, писать в представлениях group by, rownum и прочие order by - в общем случае очень плохо
23 сен 15, 14:48    [18185493]     Ответить | Цитировать Сообщить модератору
 Re: Не получается создать представление  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
andreymx
не хватает прав напрямую и + with grant option
with grant option не обязательно
23 сен 15, 14:48    [18185499]     Ответить | Цитировать Сообщить модератору
 Re: Не получается создать представление  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
Представление — это источник данных для отчета, поэтому и 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 сен 15, 14:59    [18185568]     Ответить | Цитировать Сообщить модератору
 Re: Не получается создать представление  [new]
Добрый Э - Эх
Guest
Alibek B.,
Уже и Ф.А.К. по этому поводу написали, но все равно каждый ламер считает, что он умнее всех и его проблема - уникальна.

F.A.Q. - 7. Вопрос. Почему в своем pl/sql-коде (представлении/процедуре/триггере/пакете) не удается использовать чужой объект - выдается ошибка ORA-00942 table or view does not exist - хотя в sql-запросе или в анонимном pl/sql/блоке все нормально, обращение к объекту другого пользователя проходит без проблем?
23 сен 15, 15:08    [18185598]     Ответить | Цитировать Сообщить модератору
 Re: Не получается создать представление  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
Да, вопрос решен.
23 сен 15, 15:38    [18185708]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить