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

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

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

DECLARE
job BINARY_INTEGER := :job;
next_date DATE := :mydate;
broken BOOLEAN := FALSE;
BEGIN
WHAT
: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) AS
2 BEGIN
3 P_BROKEN := TRUE;
4 DBMS_LOCK.SLEEP(5);
5 END;
      6 /

过程已创建。

SQL> DECLARE
2 V_JOB NUMBER;
3 BEGIN
4 DBMS_JOB.SUBMIT(V_JOB, 'P_TEST(BROKEN);', SYSDATE, 'SYSDATE + 1/1440');
5 COMMIT;
6 END;
      7 /

PL/SQL 过程已成功完成。

SQL> COL WHAT FORMAT A30
SQL> SELECT JOB, WHAT, TOTAL_TIME,
BROKEN, FAILURES FROM USER_JOBS;
JOB WHAT TOTAL_TIME B FAILURES
---------- ------------------------------
6 P_TEST(BROKEN); 3 N
SQL> SELECT JOB, WHAT, TOTAL_TIME, BROKEN,
 FAILURES FROM USER_JOBS;
JOB WHAT TOTAL_TIME B FAILURES
---------- ------------------------------
      6 P_TEST(BROKEN); 5 Y 0

采用这种方法,运行一次后,JOB不再运行,但是JOB信息并没有丢失,仍然保留在USER_JOBS视图中。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql
, 方法
, 运行
, job
32]Broken
oracle job interval、job interval、dbms job interval、修改job interval、plsql job interval,以便于您获取更多的相关知识。

时间: 2024-11-10 00:59:26

如何解决JOB的Interval输入参数过长的相关文章

输入参数-db2数据库存储过程问题

问题描述 db2数据库存储过程问题 建立了一个存储过程有一个输入参数为varchar(50),但是存储过程里的得到这个参数后面多了很多空格,插入到数据库时就造成了值过大,插入失败,就算是把这个输入参数trim也是没有效果,还是有空格.存储过程在开发环境和测试环境都没有问题,放到生产环境就有问题.由于第一次使用db2数据库,实在是找不到问题所在.看看哪位大侠能帮解决一下.

MWMCR::EvaluateFunction error ... 未定义与 'char' 类型的输入参数相对应的函数 'algorithm'。

问题描述 用C#调用MATLAB2014a编译的DLL,函数在MATLAB中是可以运行的,但是在C#中就总是报错"未定义与'char'类型的输入参数相对应的函数'algorithm',algorithm是我下载的spider工具箱里面的一个类,已经放到toolbox里了,matlab的路径也配置好了,已经弄了一星期了,还没解决,给位大侠,求指点啊! 解决方案 解决方案二:截图,代码解决方案三:这个是C#的代码下面是MATLAB里的代码明明有algorithm这个函数,为什么说没有定义呢?关键是f

使用Mybatis执行sql时如何统一校验输入参数?

问题描述 如dao方法有:void batchInsert(List<User> userList);List<User> getUsersByIds(List<Long> idList);void deleteUsersByids(List<Long> idList);我想若输入参数为空(list.isEmpty()),就不要往下执行sql了,直接返回.否则的话会有错误sql出现,如:mysql> select * from user where i

Javascript中验证输入参数

javascript Javascript的函数声明中的参数列表并不意味着什么--它们纯粹是为了方便访问这些参数而放在那里的,而并没有限制调用者怎么传参数,调用者想怎么传就怎么传,只要脚本不出错-- 所有,有时候为了保证程序的健壮性,需要实现输入参数的验证和默认的输入参数.这几天学习的过程中恰好写了一些简单的解决方案,放在这里做备份. 首先是验证类型的合法性: function validateType( obj, type) {  if (!(obj instanceof type)) {  

如何在客户端调用SQLSERVER的DTS包(并且可以输入参数)?

server|sqlserver|客户端 ********************************************************** Author:黄山光明顶 mail:leimin@jxfw.com version:1.0.0 date:2004-1-30 (如需转载,请注明出处!,如果有问题请发MAIL给我:-)) *********************************************************** 经常有网友问起如何在客户端调用S

使用准则进行条件查询--1.3.运行查询前输入参数

3.运行查询前输入参数 参数查询可以显示一个或多个提示参数值(准则)的预定义对话框. 在要作为参数使用的每一字段下的"准则"单元格中,在方括号内键入相应的提示.此查询运行时,Microsoft Access 将显示该提示. 在这个设计视图中,在日期字段添写了准则:[请输入要查询的日期:] 当查询运行时,先弹出一个对话框, 要求输入参数值,提示信息就是准则中[ ]内的文本. 如果按取消键,查询将终止,不出现查询结果. 查询的运行结果,因为输入的参数为"99-7-15"

ASP调用带有输入参数和输出参数的存储过程

存储过程 返回值其实是一种特殊的输出参数.在大多数情况下,我们用到的是同时有输入及输出参数的存储过程,比如我们想取得用户信息表中,某ID用户的用户名,这时候,有一个输入参数----用户ID,和一个输出参数----用户名.实现这一功能的存储过程如下:<br><br> <table style="WIDTH: 475px; HEIGHT: 220px" borderColor=#cccccc width=475 align=center bgColor=#e3

Oracle中自定义函数 无参数 输入参数 输出参数

-- 19-1:建立无参数的函数 CREATE OR REPLACE FUNCTION cur_datetime RETURN VARCHAR2 IS BEGIN RETURN TO_CHAR(sysdate, 'YYYY"年"MM"月"DD"日"HH24″时"MI"分"SS"秒"'); END; / -- 19-2:建立带有输入参数的函数 CREATE OR REPLACE FUNCTION g

你好,在activiti中能实现点击某个任务框,然后然后弹出一个面板来输入参数吗?

问题描述 你好,在activiti中能实现点击某个任务框,然后然后弹出一个面板来输入参数吗? 你好,在activiti中能实现点击某个任务框,然后然后弹出一个面板来输入参数吗? 解决方案 你连这个都不会呀?不就是dialog嵌入edittext吗? 解决方案二: 可以啊,给任务框控件添加点击事件,点击后弹出你自定义的带有edittext的dialog