你用decode判断一下呗 如果to_char(sysdate,'hh24')在9-18之间 就间隔十分钟、、

解决方案 »

  1.   

    BEGIN
    DBMS_SCHEDULER.CREATE_JOB(
    job_name =>'P_job',
    job_type =>'STORED_PROCEDURE',
    job_action =>'P_tset_',
    start_date        => TRUNC(sysdate)+9/(24), 
    repeat_interval =>'FREQ=minutely ; INTERVAL=10,BYHOUR=9,10,11,12,13,14,15,16,17,18' );
    enabled          => true; 
    END;
    试试
      

  2.   

    INTERVAL=10后面应该是分号,不是逗号,这个编辑能力太差了,改都改不了
    还有注意中英文标点
      

  3.   

     dbms_job.submit(job_name,
       'begin
         if to_char(sysdate,''hh24'') between ''9'' and ''18'' then
             my_proc;
         end if;
        end;',  sysdate, 'sysdate+10/24*60' );
    你这样试试?
      

  4.   

    加一个状态表,如未执行时状态status=0,当正在执行时,状态为1。
    每次到10分钟时,如果这个状态为0则可以执行,否则就等下一个10分钟。
      

  5.   

    1 设置一个job让他每天早上9点到晚上6点每10分钟跑一次 
      --可以通过一个稍微复杂的interval实现2 还有一个问题就是程序10分钟之内没有跑完,下个十分钟是继续跑完还是重新跑?
      --把你的判断写到存储过程里去。 begin
       if sysdate .....(你可以运行的时间段) then
          if 运行标识=1 then
            update table set 运行标识 = 0;
            原来的代码
            update table set 运行标识 = 1;
          end if;
       end if;
       
       
     end;