请问dbms_job的interval能不能设置一些指定的日期?这些指定的日期来自一个table,table中专门存放要运行的日期,并且这些日期没有规律,比如:8月3号,8月27号,9月5号,9月22号...据说用自定义函数可以,但是不知道怎么弄?请帮忙,谢谢!

解决方案 »

  1.   

    思路:
    1、你可以写JOB,interval设置成每隔一天。
    2、然后JOB调用的存储过程中,判断当前日期是否在你指定的表中,
         如果是,则继续执行后面的任务。不是,则退出!
      

  2.   

    然后JOB调用的存储过程中,判断当前日期是否在你指定的表中,
    这个判断怎么写?能不能稍微详细点?批
      

  3.   

    create table sc(id number,rundate date);
    insert into sc values(1,to_date('2010-09-22','yyyy-mm-dd'));
    CREATE OR REPLACE PROCEDURE p_test IS
      v_count PLS_INTEGER;
    BEGIN
      v_count := 0;
      SELECT COUNT(1) INTO v_count FROM sc WHERE rundate = trunc(SYSDATE);
      IF v_count >= 1 THEN
        --你要运行代码
      END IF;
    END;
    /
      

  4.   

    create or replace procedure test_pro is
    begin
      insert into t values(1,'kkkk');
      commit;
    end test_pro;
    SQL> var job1 number;
    SQL> begin
      2  if to_char(sysdate,'mm-dd') in ('08-29','08-31') then
      3     dbms_job.submit(:job1,'test_pro;',sysdate,'sysdate+1');
      4  end if;
      5  end;
      6  /