我现在要做个程序根据配置的周期进行运行,周期有如下几种,年,季,月,星期,日!
如果是年,哪么每一年的第一天0点0分0秒运行程序,如果是季,哪么每一季的第一天0点0分0秒运行程序,
月,星期,日都一样。
请问如何实现,给点思路!

解决方案 »

  1.   

    你可以把要做的事情写个存储过程,然后oracle里边不是有个job么,用来定时触发你写的那个存储过程,你可以设定第年触发一次或月,日,星期什么都可以。
      

  2.   


    --oracle job可以做,给你个例子:现在创建了一张新表,然后定时的把 学生表 统计出来的数据插入到新表中,请问怎样实现?
    学生表
    编号,注册时间,姓名,性别
    新表
    obj_id,注册日期,注册人数具体说明 : 每天早上 3:00系统自动从 学生表 中统计前一天 注册人数(如果前一天没有人注册,则这天注册人数为零),CREATE TABLE job(id number,dt date);
    CREATE SEQUENCE job_seq START WITH 1 INCREMENT BY 1;--建立一个存储过程
    CREATE OR REPLACE PROCEDURE p_jobtest
    IS
      id NUMBER;
    BEGIN
      SELECT job_seq.NEXTVAL INTO id FROM dual;
      --插入新表
      INSERT INTO job VALUES(id,sysdate);
      COMMIT;
    END;
    /--提交一个JOB ,每天晚上十点执行
    DECLARE
      v_jobno NUMBER;
    BEGIN
      sys.dbms_job.submit(job => v_jobno,
      what => ' begin p_jobtest; end;',
      next_date => to_date('2010-09-27 22:00:00','yyyy-mm-dd hh24:mi:ss'),
      interval => 'trunc(sysdate+1)+22/24') ;
    END;
    /
      

  3.   


    我现在是有一个存储过程,然后用job调用,job每一分钟调用一次,如果当前时间符合周期配置里,每一年,每一季,每一月,每一星期,每一天的0分左右,哪么我就往下执行。但是这个判断代码我不知道怎么写,
    在unix里可以配置  00.00.*.*   但是orcal里不知道怎么写代码!
      

  4.   

    不太清楚您所说的问题和Oracle有什么关系?请把问题描述清楚,运行的是什么程序,由谁来运行,你写的程序代码还是由数据库来运行?
      

  5.   


    可能我表达的有问题,说的简单点吧,我现在有配置表
    里面的配置数据如下。编码   名称  计算值 
    1     年     ....
    2     季     ....
    3     月     ....
    4     星期   ....
    5     日     ....我现在要从一张数据表里读取信息,如果数据配合的是年,哪么我每年第一天0时0分0秒插入一条数据
    如果是季,哪么每季第一天哪么我每年第一天0时0分0秒插入一条数据。
    月,星期,日同上。
    这块时间判断程序在oracle里怎么写, 上表的计算值能怎么配置下,用在方法里体现出来
      

  6.   

    job+case表达式.
    你的周期怎么得到?描述的具体些