求助:
在oracle 10g中要写一个job,要求是在每年的6月30号与12月31号晚上10:30执行,就是第一次执行时间为2007-06-30 PM 10:30 ,间隔时间为半年执行一次。如何编写?需要代码,谢谢

解决方案 »

  1.   

    example:
    -------------------------------------------------------------------------------------
    一个简单例子: 
      
      创建测试表
      SQL> create table TEST(a date);
      
      表已创建。
      
      创建一个自定义过程
      SQL> create or replace procedure MYPROC as
       2 begin
       3 insert into TEST values(sysdate);
       4 end;
       5 /
      
      过程已创建。
      
      创建JOB
      SQL> variable job1 number;
      SQL> 
      SQL> begin
       2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
       3 end;
       4 /
      
      PL/SQL 过程已成功完成。
      
      运行JOB
      SQL> begin
       2 dbms_job.run(:job1);
       3 end;
       4 /
      
      PL/SQL 过程已成功完成。
      
      SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;
      
      时间
      -------------------
      2001/01/07 23:51:21
      2001/01/07 23:52:22
      2001/01/07 23:53:24
      
      删除JOB
      SQL> begin
       2 dbms_job.remove(:job1);
       3 end;
       4 /
      
      PL/SQL 过程已成功完成。
      

  2.   

    你的就是6个月执行一次。NEXT_DATE:=to_date('2007-6-30','yyyy-mm-dd');
    INTERVAL:=last_day(add_months(to_date('2007-6-30','yyyy-mm-dd'),6))
      

  3.   

    请写具体些,我是头一次写Job,最好写完整点,谢谢了
      

  4.   

    下面是我写的job:
    begin
      sys.dbms_job.submit(job => :job,
                          what => 'test2;',
                          next_date => to_date('30-06-2007 22:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'last_day(add_months(to_date(''2007-06-30 22:00:00'',''yyyy-mm-dd hh24:mi:ss''),6))');
      commit;
    end
    可是执行一次之后,没有没有再执行????????