1

我一直在尝试安排每晚同时刷新三个物化视图。我使用了下面的代码

BEGIN
DBMS_SCHEDULER.CREATE_JOB 
(
JOB_NAME            => 'REFRESH_MVIEW',
JOB_TYPE            => 'PLSQL_BLOCK',
JOB_ACTION          => 'BEGIN DBMS_MVIEW.REFRESH("m_view1, m_view2, m_view3",''C''); END;',
NUMBER_OF_ARGUMENTS => 0,
START_DATE          => SYSTIMESTAMP,
REPEAT_INTERVAL     => 'FREQ=DAILY; BYHOUR=0',
END_DATE            => NULL,
ENABLED             => TRUE,
AUTO_DROP           => FALSE,
COMMENTS            => 'JOB TO REFRESH'
);
END;

但是在作业运行后我收到以下错误

ORA-12012:自动执行作业 57179 时出错 ORA-06550:行 ORA-06550:第 1 行,第 495 列:PLS-00114:标识符“m_view1,m_view2”太长,列:

我知道程序名称中有 30 个字符的限制。那么,这是否意味着我必须将工作分成 3 个不同的工作?你能告诉我哪里出错了吗?

提前致谢 !

4

1 回答 1

2

你能告诉我哪里出错了吗?

试着这样写你的陈述:

BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''C'')

或者

BEGIN DBMS_MVIEW.REFRESH(''m_view1,m_view2,m_view3'',''CCC'')

查看列表是使用字符串指定的——因此使用单引号。我不知道视图列表中的空格是否相关。有疑问,我也删除了它们。

请注意,在第一种情况下,您有后两个视图的默认刷新。如果您需要对所有视图进行完全刷新,则必须将CCC指定为刷新方法

请参阅https://docs.oracle.com/cd/A97630_01/server.920/a96568/rarmviea.htm#94135

于 2014-11-17T12:37:57.007 回答