Oracle SQL — материализованное представление — быстрое обновление с вызовом пакета дает ошибку «сложный запрос»

У меня есть материализованное представление, и мне нужно добавить определенные функции в один из столбцов, включенных в MView. Функциональность заключается в вызове определенного пакета, если значение столбца равно Y, иначе просто примите как есть. Я знаю, что мы не можем использовать DECODE для быстрого обновления, поэтому я попытался использовать UNION ALL и разделить его на 2 запроса.

      create materialized view test_mview 
(
col1,
col2,
..
)
build immediate
fast refresh 
with primary key as
select p_tes_pkg(ta.col1), ta.col2,.. 
from table_a ta, table_b tb, table_c tc 
where ta.id = tb.ta_id 
  and tb.code = tc.tb_code 
  and ta.col1 = 'Y' 
  and tb.type in ('ABC','DEF')
  and tb.type_id is not null
  and ta.code = tc.ta_code
  and regexp_like (ta.name, '^[[:digit:]]+$')
union all 
select ta_2.col1, ta_2.col2,.. 
from table_a ta_2, table_b tb_2, table_c tc_2 
where ta_2.id = tb_2.ta_id 
  and NVL(ta_2.col1,'N') = 'N'
  and tb_2.code = tc_2.tb_code
  and tb_2.type in ('ABC','DEF')
  and tb_2.type_id is not null
  and ta_2.code = tc.ta_code
  and regexp_like (ta_2.name, '^[[:digit:]]+$')
;

Это все еще дает ту же ошибку. Итак, я попытался создать представление с запросом выбора и использовать его для создания MView. Все та же ошибка. Пожалуйста, помогите и спасибо заранее.

Ошибка:

      ORA-12015: cannot create a fast refresh materialized view from a complex query
12015. 00000 -  "cannot create a fast refresh materialized view from a complex query"
*Cause:    Neither ROWIDs and nor primary key constraints are supported for
           complex queries.
*Action:   Reissue the command with the REFRESH FORCE or REFRESH COMPLETE
           option or create a simple materialized view.

0 ответов

Другие вопросы по тегам