Oracle обновляет материализованное представление - ошибка компиляции - PullRequest
0 голосов
/ 28 января 2010

Я пытаюсь выполнить обновление для материализованного представления, но не могу заставить скрипт скомпилироваться.

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) Ожидается: (; @
СРОЧНАЯ

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, надеюсь, это не проблема.

Заранее спасибо!

1 Ответ

10 голосов
/ 28 января 2010

Я думаю, если вы просто исключите "exec", это может сработать лучше. «exec» - это команда SQL * Plus. IOW, попробуйте:

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