【发布时间】:2012-07-18 06:52:06
【问题描述】:
我正在尝试使用以下方法刷新物化视图:
DBMS_MVIEW.REFRESH('v_materialized_foo_tbl')
但是它抛出了无效的 sql 语句。
然后我创建了一个这样的存储过程:
CREATE OR REPLACE
PROCEDURE MAT_VIEW_FOO_TBL
IS
BEGIN
DBMS_MVIEW.REFRESH('v_materialized_foo_tbl')
END MAT_VIEW_FOO_TBL IS;
此过程已成功创建,但是当我使用
调用此过程时MAT_VIEW_FOO_TBL;
又报错了。
请针对此问题提出解决方案。
谢谢, 斯里尼瓦斯
【问题讨论】:
-
您使用的是
exec DBMS_MVIEW.REFRESH('v_materialized_foo_tbl');或exec MAT_VIEW_FOO_TBL还是BEGIN DBMS_MVIEW.REFRESH('v_materialized_foo_tbl'); END;?这些中的任何一个都应该有效。 -
我尝试使用 exec MAT_VIEW_FOO_TBL;也开始 DBMS_MVIEW.REFRESH('v_materialized_foo_tbl');结尾;但没有用。
-
我认为您是从 php 作为 sql 语句执行它。它应该作为程序执行。我不知道php。你如何称呼这些陈述。来自 Toad/SQLDeveloper 还是使用 php?
-
并且...您应该使用 'V_MATERIALIZED_FOO_TBL' 而不是小写来调用它。
-
是的,我正在从 Zend Studio 执行这些语句。我尝试使用大写字母 BEGIN DBMS_MVIEW.REFRESH('V_MATERIALIZED_FOO_TBL');结尾;其中它给出了新的错误 ORA-06550:第 1 行,第 59 列:PLS-00103:在预期以下情况之一时遇到符号“”:;
符号 "; 被插入 "" 之前以继续。