尝试在我的“刷新”存储过程中删除并重新创建索引,但收到错误



我正在尝试使用以下存储过程删除/重新创建索引并每天刷新 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;
/

最新更新