现在有一个不定时周期,可能是年,季,月,周,天,都可能,通过配置一个计算值来实现,当每个周期的第一天的0时开始触发执行一个存储过程!不知道如何实现!请教大家,最好给点代码!

解决方案 »

  1.   

    不清楚.按你的描述设计下,看符合要求不.
    建立一个job,每天(或者半小时?)执行一次,对你job定义的表进行扫描.如果表中有新增数据(有个字段表征是否处理过,deal_sts,0,未处理,1已处理),则新增一个job,对于新增job的周期,按照表中定义(字段job_type,0天,1周,2月,3年)
      

  2.   

    楼主的意思是酱紫的莫~~
    首先一个配置表,这个表中楼主可以设定周期值为年,月,或季。
    然后建立一个job,当配置表中的周期值开始时(也就是第一天时)就执行这个job?
    例如:周期值设定为‘月’
    当每月的1号是,就要执行这个job!
    对吗?楼主????
      

  3.   

    笨方法
    1、设置一个job,每天都执行
    2、在执行的过程里面,添加额外判断,如你自己写的,如果符合判断就执行,否则不执行
      

  4.   


    嗯,现在就是(字段job_type,0天,1周,2月,3年) 这只是个描述的东西,如何配置一个值,通过这个值知道年,季度,月,星期,日, 比如我在unix 下 00.00.00.00.00.*标示每年的第一天,00.00.00.00.*.*表示每个月的第一天,这个值怎么写,还有我需要判断系统当前时间是否为配置的周期的头一天。不知道如何判断!
      

  5.   

    这样子是不是可以呢?
    ORACLE JOB INTERVAL参数设置1:每分钟执行    Interval => TRUNC(sysdate,'mi') + 1/ (24*60)    或    Interval => sysdate+1/1440    2:每天定时执行    例如:每天的凌晨1点执行    Interval => TRUNC(sysdate) + 1 +1/ (24)    3:每周定时执行    例如:每周一凌晨1点执行    Interval => TRUNC(next_day(sysdate,'星期一'))+1/24    4:每月定时执行    例如:每月1日凌晨1点执行    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24    5:每季度定时执行    例如每季度的第一天凌晨1点执行    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24    6:每半年定时执行    例如:每年7月1日和1月1日凌晨1点    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24    7:每年定时执行    例如:每年1月1日凌晨1点执行    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24
      

  6.   


    --然后你这个样子:1.Create or replace Table...2.Create or replace procedure..3.variable job1 number;
      begin
        --select 开始时间 from Table into xxx;
        --判断取得的时间,然后根据上面的不同来设定间隔时间
        if 每年 then
          dbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate');
        end
        ...
      end;