2010-01-28 90 views
0

我试图在物化视图上执行刷新,但无法获取脚本进行编译。Oracle刷新物化视图 - 编译错误

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,希望没有问题。

在此先感谢!

+0

我确定其中的一个愚蠢的错误。 – Tom 2010-01-28 19:00:04

+0

试用'EXECUTE DBMS_MVIEW ...'而不是'EXEC DBMS_MVIEW ...' – 2010-01-28 19:15:56

+0

nope,仍然没有编译:( – Tom 2010-01-28 19:20:07

回答

10

我想如果你只是完全消除了“exec”,它可能会更好。 “exec”是一个SQL * Plus命令。 IOW,请尝试:

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

是的,这就是我修复它的方式 谢谢 – Tom 2010-01-28 23:41:52