如何解决JOB的Interval输入参数过长

幽蓝星影

幽蓝星影

2016-01-29 14:39

如何解决JOB的Interval输入参数过长,如何解决JOB的Interval输入参数过长

本文根据一段错误代码从而来分析如何解决JOB的Interval输入参数过长的问题。

给出的运行JOB的PL/SQL代码为:


DECLAREjob BINARY_INTEGER := :job;next_date DATE := :mydate;broken BOOLEAN := FALSE;BEGINWHAT:mydate := next_date;IF broken THEN :b := 1; ELSE :b :=0; END IF;      END;

并说明了如何使用NEXT_DATE作为存储过程的输出参数,来指定下次JOB的下次运行时间。

第一次看到这里的时候,一方面是感叹这种内部的东西,一般人是无法得到的,只有Tom这种内部人士才能得到;另一方面是佩服Tom的功力,说实话,即使是把代码给我,我也想不出这么巧妙的方法。

这次重读这部分内容,有了一点新的想法,对于BROKEN变量,是否也可以做点什么?

采用和上面类似的方法,可以控制JOB的行为,使JOB成功运行一次后,就自动停止不在执行。由于普通的一次性JOB,在运行后就从JOB视图中消失了,如果希望留下运行信息,则必须使用日志表,十分的麻烦。而采用下面的方法处理一次性JOB,可以方便将JOB的运行信息保留下来:

SQL CONN /@YANGTK AS SYSDBA

已连接。

SQL GRANT EXECUTE ON DBMS_LOCK TO YANGTK;

授权成功。

SQL CONN YANGTK/YANGTK@YANGTK

已连接。

SQL CREATE OR REPLACE PROCEDURE P_TEST (P_BROKEN OUT BOOLEAN) AS2 BEGIN3 P_BROKEN := TRUE;4 DBMS_LOCK.SLEEP(5);5 END;      6 /

过程已创建。

SQL DECLARE2 V_JOB NUMBER;3 BEGIN4 DBMS_JOB.SUBMIT(V_JOB, 'P_TEST(BROKEN);', SYSDATE, 'SYSDATE + 1/1440');5 COMMIT;6 END;      7 /

PL/SQL 过程已成功完成。

SQL COL WHAT FORMAT A30SQL SELECT JOB, WHAT, TOTAL_TIME, BROKEN, FAILURES FROM USER_JOBS;JOB WHAT TOTAL_TIME B FA      
展开更多 50%)
分享

猜你喜欢

如何解决JOB的Interval输入参数过长

电脑网络
如何解决JOB的Interval输入参数过长

如何解决MindManager参数错误或参数不正确问题

电脑网络
如何解决MindManager参数错误或参数不正确问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何解决Remoting无法传输存储过程参数的问题

Web开发
如何解决Remoting无法传输存储过程参数的问题

如何解决word输入法不能切换

word
如何解决word输入法不能切换

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

PowerPoint 2007中无法输入中文如何解决

电脑入门
PowerPoint 2007中无法输入中文如何解决

MathType6.9如何解决输入中文乱码问题

电脑网络
MathType6.9如何解决输入中文乱码问题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

教你用Oracle解析函数快速检查序列间隙

教你用Oracle解析函数快速检查序列间隙

修改ORACLE的DATAFILE文件名

修改ORACLE的DATAFILE文件名
下拉加载更多内容 ↓