我现在用的是PL/SQL。我写了几个过程,然后想在每天早上的八点周跑这几个过程,现在问题就来了。
是不是一个JOBS只能针对一个过程来执行呢?
(个人想想应该没那么笨吧,写同样的jobs N个,太累了,也太累赘了。)
所以,想请教有哪位XDJM知道的,告小弟一声,在此谢过了。

解决方案 »

  1.   

    把你要執行的 放到一個function裡面  然後再用job執行 這個“綜合體”就行了啊
      

  2.   

    DECLARE
      X NUMBER;
    begin
      sys.dbms_job.submit(job => X,
                          what => 'a;b;c;',
                          next_date => sysdate,
                          interval => 'trunc(sysdate)+8/24');
      commit;
    end;
    /--说明:a,b,c分别是你要执行的过程,用;隔开如果有参数要带上
      

  3.   

    回复1#的horizonlyhw
    请问这个函数该如何写?!能否给个例子或者点提示啥滴。!回复2#的tKF12183
    我尝试过的,这样是不行的。在此谢过上面两位
      

  4.   

    你的这几个存储过程是否带参数?如果带参数,你得用这种方法:a:='job_test('输入变量');'
    sys.dbms_job.submit(job1,a,sysdate,'sysdate+1/1440');如果有多个存储过程,你最好创建一个不带参数得存储过程,里面调用这些存储过程。
    不过里面应该是顺序执行的,你要同时开跑,可能还是得创建一堆job了
    create or replace procedure ....
    begin
       exec   proc1('1');
       exec   proc2('2');
    end;
      

  5.   

    回复 4#
     
    我的存储过程是不带参数的那种。
    你的意思是不是让我再写个新的products,将那些定点执行的存储过程写入新的products中。
    NEW products:
    create or replace procedure SP_RUN_8 is
    begin
      SP_STA_RD_CTN_EFFI;  //四个SP是我要定点执行的存储过程
      SP_STA_GKX_CTN;
      SP_STA_TRANSTERMINAL;
      SP_STA_DAILY_CY;
    end SP_RUN_8;NEW JOBS:
    begin
      sys.dbms_job.submit(job => :job,
                          what => 'SP_RUN_8;',
                          next_date => to_date('04-12-2009 21:46:00', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
      commit;
    end;
    /我理解的你的意思是这样的,但是貌似还是不行啊!?麻烦能解释下嘛?谢谢
      

  6.   

    oralce啥版本?
    10g的话用SCHEDULE,这个已经替代job了。
      

  7.   

    满足你的各种要求,功能远胜job
      

  8.   

    OPER@tl> create table test(aaa date,bbb date);表已创建。OPER@tl> create or replace procedure p1
      2  as
      3  begin
      4  insert into test(aaa) values(sysdate);
      5  commit;
      6  end;
      7  /过程已创建。OPER@tl> create or replace procedure p2
      2  as
      3  begin
      4  insert into test(bbb) values(sysdate);
      5  commit;
      6  end;
      7  /过程已创建。OPER@tl> create or replace procedure p12
      2  as
      3  begin
      4  p1;
      5  p2;
      6  end;
      7  /过程已创建。OPER@tl> declare
      2  i number;
      3  begin
      4  dbms_job.submit(i,'p12;',sysdate,'sysdate+1/3600/24');
      5  end;
      6  /PL/SQL 过程已成功完成。OPER@tl> commit;提交完成。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34已选择7行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34已选择7行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34已选择7行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34
    2009-12-04 22:30:39
                        2009-12-04 22:30:39已选择9行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34
    2009-12-04 22:30:39
                        2009-12-04 22:30:39已选择9行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34
    2009-12-04 22:30:39
                        2009-12-04 22:30:39已选择9行。OPER@tl> select * from test;AAA                 BBB
    ------------------- -------------------
    2009-12-04 22:30:14
    2009-12-04 22:30:19
    2009-12-04 22:30:24
    2009-12-04 22:30:29
                        2009-12-04 22:30:29
    2009-12-04 22:30:34
                        2009-12-04 22:30:34
    2009-12-04 22:30:39
                        2009-12-04 22:30:39
    2009-12-04 22:30:44
                        2009-12-04 22:30:44已选择11行。
      

  9.   

    你可以写一个专门的过程(如test_proc)来包含其他你要执行的所有过程,然后再job中调用test_proc.
      

  10.   

    在SQLPLUS中执行:
    variable job number;
    begin 
      sys.dbms_job.submit(:job,'SP_RUN_8;', to_date('04-12-2009 21:46:00', 'dd-mm-yyyy hh24:mi:ss'),'TRUNC(sysdate,''mi'') + 1 / (24*60)'); 
      commit; 
    end;
      

  11.   

    结贴。 
    crazylaa 回答的是正确的。
    后来经过我再次的实验是可行的。vc555 给出了相对应的实例。