DBMS_MVIEW パッケージのストアドプロシージャを使用すると、具体化されたビューとその依存関係を管理および更新することができます。 Oracle と互換性のある POLARDB は、次の DBMS_MVIEW ストアドプロシージャをサポートしています。

表 1. DBMS_MVIEW stored procedures
ストアドプロシージャ 戻り値の型 説明
GET_MV_DEPENDENCIES(list VARCHAR2, deplist VARCHAR2); N/A GET_MV_DEPENDENCIES ストアドプロシージャを使用して、指定したビューの依存関係のリストを取得します。
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 REFRESH ストアドプロシージャのバリエーションを使用して、コンマ (,) で区切られたビューのリストを更新します。
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 REFRESH ストアドプロシージャのバリエーションを使用すると、dbms_utility.uncl_array 値のテーブルで指定されたすべてのビューを更新することができます。
REFRESH_ALL_MVIEWS (number_of_failures BINARY_INTEGER, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN); N/A REFRESH_ALL_MVIEWS ストアドプロシージャを使用すると、具体化されたすべてのビューを更新することができます。
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 REFRESH_DEPENDENT ストアドプロシージャのバリエーションを使用すると、コンマ区切りリストにリストされているビューに依存するすべてのビューを更新することができます。
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 REFRESH_DEPENDENT ストアドプロシージャのバリエーションを使用すると、dbms_utility.uncl_array 値のテーブルにリストされているビューに依存するすべてのビューを更新することができます。

Oracle と互換性のある POLARDB の DBMS_MVIEW パッケージは、Oracle のバージョンと比較すると、部分的にのみ実装されています。 Oracle と互換性のある POLARDB は、前の表にリストされているストアドプロシージャのみをサポートしています。

GET_MV_DEPENDENCIES

具体化されたビューに名前が付けられると、GET_MV_DEPENDENCIES ストアドプロシージャを使用することによって、指定されたビューに依存するアイテムのリストを取得することができます。 次のコードは、GET_MV_DEPENDENCIES ストアドプロシージャの構文を示しています。

GET_MV_DEPENDENCIES(
  list IN VARCHAR2, 
  deplist OUT VARCHAR2);

パラメーター

パラメーター 説明
list 具体化されたビューの名前、またはコンマ (,) で区切られた具体化されたビューの名前のリストを指定します。
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 ストアドプロシージャには、2 つ構文形式があります。 コンマ (,) で区切られたビューのリストを指定する場合、最初の構文形式を使用します。

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);

2 番目の構文 形式を使用すると、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 リストパラメーターのデータ型は VARCHAR2 です。 このパラメーターは、具体化されたビューの名前、またはコンマ (,) で区切られた具体化されたビューの名前のリストを指定します。 名前はスキーマで修飾する必要があります。
tab このパラメーターは、DBMS_UTILITY.UNCL_ARRAY 値のテーブルで具体化されたビューの名前を指定します。
method method パラメーターのデータ型は VARCHAR2 です。 このパラメーターは、指定されたビューに適用される更新の方法を指定します。 C はサポートされている唯一の method で、ビューの完全な更新を実行するために使用されます。
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 という名前の具体化されたビューを更新します。

EXEC DBMS_MVIEW.REFRESH(list => 'public.emp_view', method => 'C');

REFRESH_ALL_M VIEWS

REFRESH_ALL_MVIEWS ストアドプロシージャを使用すると、ビューが依存するテーブルまたはビューの更新後に更新されていない具体化されたビューを更新することができます。 次のコードは、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 はサポートされている唯一の method で、ビューの完全な更新を実行するために使用されます。
rollback_seg rollback_seg は互換性のために使用され、無視することができます。 デフォルト値は NULL です。
refresh_after_errors refresh_after_errors は互換性のために使用され、無視することができます。 デフォルト値は FALSE です。
atomic refresh atomic_refresh は互換性のために使用され、無視することができます。 デフォルト値は TRUE です。

DECLARE
  errors INTEGER;
BEGIN
  DBMS_MVIEW.REFRESH_ALL_MVIEWS(errors, method => 'C');
END;

更新が完了すると、エラー変数には失敗の数が含まれます。

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 リストパラメーターのデータ型は VARCHAR2 です。 このパラメーターは、具体化されたビューの名前、またはコンマ (,) で区切られた具体化されたビューの名前のリストを指定します。 名前はスキーマで修飾する必要があります。
tab DBMS_UTILITY.UNCL_ARRAY 値のテーブルで具体化されたビューの名前を指定します。
method method パラメーターのデータ型は VARCHAR2 です。 このパラメーターは、指定されたビューに適用される更新方法を指定します。 C はサポートされている唯一の method で、ビューの完全な更新を実行するために使用されます。
rollback_seg rollback_seg は互換性のために使用され、無視することができます。 デフォルト値は NULL です。
refresh_after_errors refresh_after_errors は互換性のために使用され、無視することができます。 デフォルト値は FALSE です。
atomic refresh atomic_refresh は互換性のために使用され、無視することができます。 デフォルト値は TRUE です。
nested ネストは互換性のために使用され、無視することができます。 デフォルト値は FALSE です。

次の例では、emp_view という名前の具体化されたビューに依存するすべての具体化されたビューの完全な更新について説明します。 emp_view はパブリックスキーマにあります。

DECLARE
  errors INTEGER;
BEGIN
  DBMS_MVIEW.REFRESH_DEPENDENT (errors, list => 'public. emp_view ', method => 'C ');
END;

更新が完了すると、エラー変数には失敗の数が含まれます。