我正在尝试使用以下存储过程删除/重新创建索引并每天刷新 MV。但是我收到编译错误。此外,对于大多数具体化视图刷新作业(可能偏离主题(,还有什么会被视为"良好做法"?提前感谢!
create or replace PROCEDURE "DAILY_MV_REFRESH" AS
BEGIN
--Drop Index(es)
drop bitmap index mv_test_id;
--Refresh the Materialized View(s)
dbms_mview.refresh('MV_TEST');
--Recreate Index(es)
create bitmap index mv_test_id on mv_test(test_id);
END;
你不能直接在PL/SQL过程中执行DDL;它必须在execute immediate
语句中。
create or replace PROCEDURE "DAILY_MV_REFRESH" AS
BEGIN
--Drop Index(es)
execute immediate 'drop bitmap index mv_test_id';
--Refresh the Materialized View(s)
dbms_mview.refresh('MV_TEST');
--Recreate Index(es)
execute immediate 'create bitmap index mv_test_id on mv_test(test_id)';
END;
/