Материализованное представление Oracle не поддерживает NVL - PullRequest
0 голосов
/ 12 марта 2019

Я создал простое материализованное представление в Oracle с помощью этого запроса

SELECT p.registration_no, s.sponsor_no, s.sponsor_name, p.resignation_date
FROM nmr_registration_public p, lct_sponsor s
WHERE p.sponsor_no = s.sponsor_no;

Я установил режим обновления как FORCE ON COMMIT, и он работает правильно.

Я изменил запрос вот так, просто добавив NVL(p.resignation_date, SYSDATE) оператор вот так

SELECT p.registration_no, s.sponsor_no, s.sponsor_name, NVL(p.resignation_date, SYSDATE)
FROM nmr_registration_public p, lct_sponsor s
WHERE p.sponsor_no = s.sponsor_no;

Тогда я получаю эту ошибку

ORA-12054: невозможно установить атрибут обновления ON COMMIT для материализованного представления

Не поддерживается ли NVL в MViews, если для режима обновления установлено значение ON COMMIT? И есть ли другие заявления, которые не поддерживают ON COMMIT?

1 Ответ

2 голосов
/ 12 марта 2019

Проблема не в nvl, а в sysdate

Определяющий запрос материализованного представления не может содержать неповторяемые выражения (ROWNUM, SYSDATE, неповторяемые PL / SQL функции и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...