我没有使用过JOB,请问具体怎样实现?

解决方案 »

  1.   

    declare 
      -- Local variables here
      v_jobnum  number;
    begin
      -- Test statements here
      dbms_job.submit(v_jobnum,'sp_proc;',sysdate,'LAST_DAY(LAST_DAY(SYSDATE)+1)');--提交作业,sp_proc是你的存储过程,后面的是执行它的时间
      dbms_output.put_line('job '||v_jobnum||' has been submitted.');
      --dbms_job.run(v_jobnum,TRUE);--运行作业
      --dbms_job.run(7,TRUE);--同上,这二者取一
    -- DBMS_JOB.REMOVE(6);--撤消作业
      COMMIT;
    end;
      

  2.   

    http://www.oradb.net/pack/pack_001.htm
      

  3.   

    如果任务都是在同一时间下达可用job来做,让job在该时间运行,否则好像不能实现
      

  4.   

    要灵活的运用job,得有以下三个方面的知识。
    1、能写出正常的运行的过程
    2、掌握dbms_job的用法
    3、掌握时间函数的用法,特别是trunc,next_date,add_month等函数
      

  5.   

    或者你每添加一个任务就同时添加一个job,让这个job在该任务规定结束时运行,向T2中添加记录。并只运行一次!但oracle中job好像有数量的限制!
      

  6.   

    或者你每添加一个任务就同时添加一个job,让这个job在该任务规定结束时运行,向T2中添加记录。并只运行一次!然后删除该job!
    但oracle中job好像有数量的限制!
      

  7.   

    对,用视图是个好办法,不知能否满足你的要求?
    CREATE OR REPLACE VIEW  T2
    AS
    SELECT ID AS NO,TO_CHAR(FROMDATE,'YYYY-MM-DD HH24:MI:SS')||'下达的'||TASK||'还没有完成!' AS MSG FROM T1
    WHERE FLAG=0 AND FROMDATE+1<SYSDATE
    如果这样可以满足要求,那就不要用作业,麻烦!如果你要建表地话可以在每次检索T2之前执行一次存储过程(完成向T2中插入一条消息地功能)!