一个简单例子: 创建测试表
SQL> create table a(a date);表已创建。创建一个自定义过程
SQL> create or replace procedure test as
  2  begin
  3  insert into a values(sysdate);
  4  end;
  5  /过程已创建。创建JOB
SQL> variable job1 number;
SQL> 
SQL> begin
  2  dbms_job.submit(:job1,'test;',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 a;时间
-------------------
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 过程已成功完成。

解决方案 »

  1.   

    这个不用担心,oracle会处理job这个标准包.
    job号是一个唯一标识,oracle自动分配
    QL> declare
      2  jobno number;
      3  begin
      4  dbms_job.submit(jobno,'pro;',sysdate,'sysdate+1/(24*60)');
      5  commit;
      6  end;
      7  /
    提交后,马上运行
      

  2.   

    1  请问jobno这个变量不用赋值就可以在
       dbms_job.submit(jobno,'pro;',sysdate,'sysdate+1/(24*60)');
       中使用么,那还为什么要声明它呢?
    2  如何配置job,是否要配置init.ora文件,是否要重启Oracle服务器
    3  如何让job运行起来
      

  3.   

    variable job1 number

    dbms_job.remove(:job1);
    中的job1是同一个值么?
      

  4.   

    dbms_job.submit(jobno,'pro;',sysdate,'sysdate+1/(24*60)');中的第一个参数是个变量,必须先定义,调用submit后oracle给这个job分配一个唯一的编号,这个编号可以用在remove等job函数上。第一次允许job后,下次启动oracle时job自动运行。
      

  5.   

    1  既然jobno是个变量,为什么不对它赋值,再调用
       dbms_job.submit(jobno,'pro;',sysdate,'sysdate+1/(24*60)');
       如果不赋值,那么上面的值具体是多少?是随便给得么?
    2  能不能直接回复,我的意思是调用dbms_job.run(:job1);后,编号为job1的job是否需要重
       新启动Oracle服务器才能运行
    3  请按我的要求直接回复,不要间接回答,对号入座。
      

  6.   

    jobno是系统自动赋值的,是从1开始的正整数,每增加一个job,jobno就会加一,比如说现在有job1,job2,当你再增加一个job的时候就是job3,当你删除job2,再增加job,就是job4
    不需重启,但是要保证
    version 8i add :
    job_queue_processes = 10
    job_queue_interval = 1
    version 9i add :
    job_queue_processes = 10
    不然的话就要设置,当然就要重启