1

マテリアライズド ビューで更新を実行しようとしていますが、スクリプトをコンパイルできません。

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    exec DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;

メッセージが表示されます:

ORA-06550: 行 3、列 9: PLS-00103: 次のいずれかを期待しているときに、シンボル "DBMS_MVIEW" が検出されました:

:= . ( @ % ; 即時 続行するには、「DBMS_MVIEW」の代わりに記号「:=」が使用されました。

私は何か間違っていますか?何かをインポートする必要がありますか?

アップデート

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE  DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;

(S1917) 期待: ( ; @
IMMEDIATE

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE IMMEDIATE DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;

Warning: compiled but with compilation errors

これは Oracle 10g XE です。問題ないことを願っています。

前もって感謝します !

4

1 に答える 1

12

「exec」を完全に削除すれば、うまくいくと思います。"exec" は SQL*Plus コマンドです。IOW、試してください:

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;
于 2010-01-28T20:22:55.807 に答える