DBMS_MVIEW
您可以使用DBMS_MVIEW包中的存储过程来管理、更新物化视图及它们的依赖关系。
POLARDB支持下列DBMS_MVIEW存储过程:
Procedure | Return Type | Description |
---|---|---|
GET_MV_DEPENDENCIES(list VARCHAR2, deplist VARCHAR2); | n/a | The GET_MV_DEPENDENCIES procedure returns a list of dependencies for a specified view. |
REFRESH(list VARCHAR2, method VARCHAR2, rollback seg VARCHAR2 , push deferred rpc BOOLEAN, refresh after errors BOOLEAN , purge option NUMBER, parallelism NUMBER, heap size NUMBER , atomic refresh BOOLEAN , nested BOOLEAN); | n/a | This variation of the REFRESH procedure refreshes all views named in a comma- separated list of view names. |
REFRESH(tab dbms_utility.uncl_array, method VARCHAR2, rollback_seg VARCHAR2, push_deferred_rpc BOOLEAN, refresh_after_errors BOOLEAN, purge_option NUMBER, parallelism NUMBER, heap_size NUMBER, atomic_refresh BOOLEAN, nested BOOLEAN); | n/a | This variation of the REFRESH procedure refreshes all views named in a table of dbms_utility.uncl_array values. |
REFRESH_ALL_MVIEWS(number_of_failures BINARY_INTEGER, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN); | n/a | The REFRESH_ALL_MVIEWS procedure refreshes all materialized views. |
REFRESH_DEPENDENT(number_of_failures BINARY_INTEGER, list VARCHAR2, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN, nested BOOLEAN); | n/a | This variation of the REFRESH_DEPENDENT procedure refreshes all views that are dependent on the views listed in a comma-separated list. |
REFRESH_DEPENDENT(number_of_failures BINARY_INTEGER, tab dbms_utility.uncl_array, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN, nested BOOLEAN); | n/a | This variation of the REFRESH_DEPENDENT procedure refreshes all views that are dependent on the views listed in a table of dbms_utility.uncl_array values. |
与Oracle版本的DBMS_MVIEW执行相比,POLARDB的DBMS_MVIEW执行是部分执行。POLARDB仅支持上述表中列出的函数和存储过程。
GET_MV_DEPENDENCIES
当命名一个物化视图之后,GET_MV_DEPENDENCIES返回的是依赖于指定视图的列表项。语法如下:
GET_MV_DEPENDENCIES(
list IN VARCHAR2,
deplist OUT VARCHAR2);
参数
参数名称 | 描述 |
---|---|
list | list 用于指定物化视图的名称或物化视图名称中用逗号分隔的列表。 |
deplist | deplist 是一个模式限定依赖关系中用逗号分隔的列表。
说明 deplist 是一个VARCHAR2 值。
|
示例
DECLARE
deplist VARCHAR2(1000);
BEGIN
DBMS_MVIEW.GET_MV_DEPENDENCIES('public.emp_view', deplist);
DBMS_OUTPUT.PUT_LINE('deplist: ' || deplist);
END;
显示了物化视图public. emp_view上的依赖关系列表。
REFRESH
您可以使用REFRESH存储过程来更新在用逗号分隔的视图名称列表中或在DBMS_UTILITY. UNCL_ARRAY值的表中指定的所有视图。REFRESH存储过程有两种形式的语法。当您指定逗号分隔的试图名称列表时,可以使用第一种形式的语法:
REFRESH(
list IN VARCHAR2,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL,
push_deferred_rpc IN BOOLEAN DEFAULT TRUE,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
purge_option IN NUMBER DEFAULT 1,
parallelism IN NUMBER DEFAULT 0,
heap_size IN NUMBER DEFAULT 0,
atomic_refresh IN BOOLEAN DEFAULT TRUE,
nested IN BOOLEAN DEFAULT FALSE);
第二种形式的语法用于指定DBMS_UTILITY . UNCL_ARRAY值的表中的视图名称:
REFRESH(
tab IN OUT DBMS_UTILITY.UNCL_ARRAY,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL,
push_deferred_rpc IN BOOLEAN DEFAULT TRUE,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
purge_option IN NUMBER DEFAULT 1,
parallelism IN NUMBER DEFAULT 0,
heap_size IN NUMBER DEFAULT 0,
atomic_refresh IN BOOLEAN DEFAULT TRUE,
nested IN BOOLEAN DEFAULT FALSE);
参数
参数名称 | 描述 |
---|---|
list | list 是一个VARCHAR2 值。用于指定物化视图的名称或逗号分隔的物化视图名称列表,且名称必须是模式限定的。 |
tab | tab 是DBMS_UTILITY .UNCL_ARRAY 值的表,用于指定物化视图的名称。 |
method | method 是一个 VARCHAR2 值。用于指定将要应用于指定视图的更新方法。C 是唯一支持的更新方法,它能将视图完整地更新。 |
rollback seg | rollback_seg 可被兼容和忽略。缺省为NULL 。 |
push deferred rpc | push_deferred_rpc 可被兼容和忽略。缺省为TRUE。 |
refresh after errors | refresh_after_errors 可被兼容和忽略。缺省为FALSE。 |
purge option | purge_option 可被兼容和忽略。缺省为1。 |
parallelism | parallelism可被兼容和忽略。缺省为0。 |
heap_size IN NUMBER DEFAULT 0, | heap_size可被兼容和忽略。缺省为0。 |
atomic refresh | atomic_refresh可被兼容和忽略。缺省为TRUE。 |
nested | nested可被兼容和忽略。缺省为FALSE。 |
示例
下列示例使用了DBMS_MVIEW.REFRESH 对物化视图public.emp_view 进行COMPLETE 更新操作:
EXEC DBMS_MVIEW.REFRESH(list => 'public.emp_view', method => 'C');
REFRESH_ALL_M VIEWS
表或视图的视图关系修改之后,您可以使用REFRESH_ALL_MVIEWS存储过程来更新任何没有被更新的物化视图。语法如下:
REFRESH_ALL_MVIEWS(
number_of_failures OUT BINARY_INTEGER,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
atomic_refresh IN BOOLEAN DEFAULT TRUE);
参数
参数名称 | 描述 |
---|---|
number of failures | number_of_failures 是一个BINARY_INTEGER,用于指定在更新操作中发生的失效数量。 |
method | method 是一个 VARCHAR2 值。用于指定将要应用于指定视图的更新方法。C 是唯一支持的更新方法,它能将视图完整地更新。 |
rollback seg | rollback_seg可被兼容和忽略。缺省为NULL。 |
refresh after errors | refresh_after_errors可被兼容和忽略。缺省为FALSE。 |
atomic refresh | atomic_refresh is可被兼容和忽略。缺省为TRUE。 |
示例
DECLARE
errors INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_ALL_MVIEWS(errors, method => 'C');
END;
更新完成后,errors 就会包含失效数量。
REFRESH_DEPENDENT
您可以使用REFRESH_DEPENDENT存储过程来更新所有的物化视图,这些物化视图是依赖于对存储过程调用时指定视图上的。您可以指定一个逗号分隔的列表或在DBMS_UTILITY. UNCL_ARRAY值的表中提供视图名称。
使用第一种存储过程的形式来更新所有物化视图,这些物化视图是依赖于在逗号分隔的列表中指定视图上的:
REFRESH_DEPENDENT(
number_of_failures OUT BINARY_INTEGER,
list IN VARCHAR2,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
atomic_refresh IN BOOLEAN DEFAULT TRUE,
nested IN BOOLEAN DEFAULT FALSE);
使用第二种存储过程的形式来更新所有物化视图,这些物化视图是依赖于DBMS_UTILITY. UNCL_ARRAY值的表中指定视图上的:
REFRESH_DEPENDENT(
number_of_failures OUT BINARY_INTEGER,
tab IN DBMS_UTILITY.UNCL_ARRAY,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
atomic_refresh IN BOOLEAN DEFAULT TRUE,
nested IN BOOLEAN DEFAULT FALSE);
参数
参数名称 | 描述 |
---|---|
number of failures | number_of_failures 是一个BINARY_INTEGER,它包含了在更新操作中发生的失效数量。 |
list | list 是一个VARCHAR2 值。用于指定物化视图的名称或逗号分隔的物化视图名称列表,且名称必须是模式限定的。 |
tab | tab 是一个DBMS_UTILITY .UNCL_ARRAY 值的表,用于指定物化视图的名称。 |
method | method 是一个 VARCHAR2 值。用于指定将要应用于指定视图的更新方法。C 是唯一支持的更新方法,它能将视图完整地更新。 |
rollback seg | rollback_seg可被兼容和忽略。缺省为NULL。 |
refresh after errors | refresh_after_errors可被兼容和忽略。缺省为FALSE。 |
atomic refresh | atomic_refresh 可被兼容和忽略。缺省TRUE。 |
nested | nested 可被兼容和忽略。缺省为FALSE。 |
示例
下列示例对所有物化视图进行了COMPLETE更新操作。所有这些物化视图依赖于一个名为emp_view的物化视图,且物化视图emp_view所属于公有模式。
DECLARE
errors INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_DEPENDENT(errors, list => 'public.emp_view', method => 'C');
END;
更新完成后,errors就包含了失效数量。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论