select * dba_jobs可以看到各个字段
问题是:
我怎么在程序里判断一个job是否已经完全正确执行了?
我想得到一个判断表达式形如: 字段条件1 && 字段条件2 || 字段条件3.....
eg: if (broken = 'N' || ......) then
     那么执行成功;
    else
     执行失败

解决方案 »

  1.   

    job调一个存储过程或者函数,你可以做一个return value,等于1的情况下就是正常执行,等于0的情况下就是发生异常
      

  2.   

    这个知道,我的job已经做好了,问题是:我要监控他,哪个正确执行,哪个没有正确执行!!!怎么监控?
      

  3.   

    通过last_date,next_date,INTERVAL,failures,broken
    这些字段完全可以判断是否执行成功了。if broken='Y' then 失败
    elsif INTERVAL时间约等于next_date-last_date并且failures=0说明执行成功
      

  4.   

    如果是pssql怎么写呢?这个语句?
      

  5.   


    关键是用sql怎样把interval给解析了,有点难度。
    不过也可以用下面的方法判断是否正确执行:
    declare
     v_f int;
     v_t int;
     v_str_flag CHAR(1);
    begin
     FOR c in(SELECT job,total_time,failures,broken  FROM dba_jobs) LOOP
        IF c.broken='Y' THEN
         dbms_output.put_line('job='||c.job||' failed!');
        ELSIF c.total_time>0 AND c.failures=0 THEN
         dbms_output.put_line('job='||c.job||' sucessed!');
        END IF;
     END LOOP;
    end;
    /