【发布时间】:2015-01-14 08:39:20
【问题描述】:
我一直在尝试安排每晚同时刷新三个物化视图。我使用了下面的代码
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 个不同的工作?你能告诉我哪里出错了吗?
提前致谢!
【问题讨论】:
-
双引号 (
") 用于分隔标识符 - 但是,在您的情况下,您想要传递字符串文字,因此您将使用单引号 (')。由于它在另一个字符串中,您需要将它们转义(''),但使用新的引号语法通常更容易,例如q'[BEGIN DBMS_MVIEW.REFRESH('m_view1, m_view2, m_view3','C'); END;]'
标签: oracle jobs materialized-views dbms-scheduler