Oracle Materialized View не поддерживает NVL

#oracle #oracle11g #oracle10g #materialized-views

#Oracle #oracle11g #oracle10g #материализованные представления

Вопрос:

Я создал простое материализованное представление в 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: не удается установить атрибут обновления ПРИ фиксации для материализованного вида

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

Ответ №1:

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

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

Комментарии:

1. Будет ли он поддерживать вложенные запросы?