REFRESH¶
更新物化视图
声明¶
DBMS_MVIEW.REFRESH(
mvnameLIST IN VARCHAR2,
METHOD IN VARCHAR2,
ROLLBACK_SEG IN VARCHAR2,
PUSH_DEFERRED_RPC IN BOOLEAN,
REFRESH_AFTER_ERRORS IN BOOLEAN,
PURGE_OPTION IN INTEGER,
PARALLELISM IN INTEGER,
HEAP_SIZE IN INTEGER,
ATOMIC_REFRESH IN BOOLEAN,
NESTED IN BOOLEAN);
结构¶
| 参数 | 说明 |
|---|---|
| mvnameLIST | 刷新列表 |
| METHOD | 刷新方法 |
| ROLLBACK_SEG | 暂不支持 |
| REFRESH_AFTER_ERRORS | 暂不支持 |
| PURGE_OPTION | 暂不支持 |
| PARALLELISM | 暂不支持 |
| HEAP_SIZE | 暂不支持 |
| ATOMIC_REFRESH | 暂不支持 |
| NESTED | 暂不支持 |
注解
mvnameLIST可以支持多个参数,也就同时刷新多个物化视图,使用逗号分隔
注解
METHOD可支持的参数有:
完全刷新 'A'/'a'/'C'/'c'
快速刷新 'F'/'f'
默认刷新(如果可以快速刷新就使用快速刷新 否则完全刷新)'?'/'0'
示例¶
--清除环境
DROP MATERIALIZED VIEW mv;
DROP TABLE student;
--创建测试表
CREATE TABLE student(
NAME char(20),
AGE int
);
--插入数据
insert into student values('李华',10);
--创建物化视图
CREATE MATERIALIZED VIEW MV BUILD IMMEDIATE REFRESH COMPLETE
AS
SELECT * FROM student;
--创建存储过程
create or replace procedure test_refresh()
as
declare
tmpage int;
begin
select age INTO tmpage from MV where name = '李华';
DBMS_output.put_line('更新视图前李华年龄为:: '||tmpage);
update student set age = 20 where name = '李华';
dbms_mview.refresh('MV','c');
select age into tmpage from MV where name = '李华';
DBMS_output.put_line('更新视图后李华年龄为: '||tmpage);
end;
/
exec test_refresh();
--清除环境
DROP MATERIALIZED VIEW mv;
DROP TABLE student;