我正在尝试刷新物化视图几天以及几个小时和我的代码:
ALTER MATERIALIZED VIEW M_MVIEW
REFRESH FORCE ON DEMAND START WITH TO_DATE('11-07-2014 10:30:00', 'DD-MM-YYYY HH24:MI:SS')
NEXT (CASE WHEN (TO_CHAR(SYSDATE,'D','NLS_SORT = XTURKISH') = 5) AND (SYSDATE BETWEEN (TRUNC(TO_DATE('10-07-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS')) + 20/24) AND (TRUNC(TO_DATE('10-07-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS')) + 31/24)) THEN TRUNC(NEXT_DAY(TO_DATE('10-07-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS'), 'PAZARTESİ')) + 7/24
WHEN (SYSDATE BETWEEN (TRUNC(TO_DATE('10-07-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS')) + 20/24) AND (TRUNC(TO_DATE('10-07-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS')) + 31/24)) THEN TRUNC(SYSDATE) + 31/24
ELSE SYSDATE + 2/24 END)
但是我得到了错误; ORA-06502: PL/SQL: numeric or value error%s
我试图解决我的问题,但我不能。有没有人对我的问题有任何想法?
感谢。
答案 0 :(得分:1)
real 错误消息更有说服力:
ORA-12899: Value too large for column "SYS"."JOB$"."INTERVAL#" (actual: 595, maximum: 200)
因此,您似乎正在尝试为INTERVAL
设置一个太大的值。
就个人而言,我从不使用物化视图的START WITH / NEXT
。我更喜欢为刷新创建DBMS_SCHEDULER
作业,因为
USER_SCHEDULER_JOB_LOG
答案 1 :(得分:0)
对于物化视图中的NEXT子句,您可以编写CASE语句,但它只接受两个条件(它应该非常简单,如case when x=x then aa else bb end
)。我的建议是,如果可以的话,简化你的病情。