DBMS_MVIEW.REFRESH_ALL_MVIEWSの使い方

マテリアライズド・ビューの効果というのは劇的であることは、一度でもOracleをバックエンドにしたウェアハウス系のWeb-APを作成した方なら分かると思うのだが、このマテリアライズド・ビューという機能自体はあまり注目されてない。
・・・で、色んなOracle関連のドキュメントを当たってみても、

DBMS_MVIEW.REFRESH_ALL_MVIEWS:全てのマテリアライズド・ビューをリフレッシュする

としか記載がない。もちろんプロシージャの引数については説明があるが、「具体的にこの構文で実行可能」というサンプルがない。
この辺、もう少しマニュアルに気を遣って欲しい物なんだがなぁ・・・
メソッドはあっても使い方が分からないんじゃ洒落にならんだろうに。
で、かくいう私もDBMS_MVIEW.REFRESH_ALL_MVIEWSの扱いに5分くらい悩んだ1人。
通常のPL/SQLパッケージプロシージャのようにexecuteしても、引数にOUT変数が含まれているためエラーになる。
解決方法は簡単で、DECLARE〜BEGIN〜ENDで終わる一連の無名PL/SQLプロシージャから、OUT変数をきちんと受け取ってやるようにしておけばよい。
例えば、

DECLARE
debug BINARY_INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_ALL_MVIEWS(debug,'?','',FALSE,FALSE);
END;
/

といった感じ。
実際は一連のプロシージャ内でリフレッシュし、エラーがあれば、当然エラー処理するための機能なのだろうが、DBMS_MVIEW.REFRESHではあまり考えずに使えるだけに、単純にリフレッシュをテストするために、もう少し簡素なメソッド実装も持って置いて欲しかった。

まぁ、使う本人がよく理解しないまま、こんな機能使うんじゃね〜よ。
というOracleの警告だと受け止めておこう。