是否可以在DBMS_SCHEDULER作业中创建作业?

时间:2011-09-30 10:52:32

标签: oracle

使用DBMS_JOB从作业中创建作业会抛出:

ORA-32317: cannot run a job from a job

有人知道这个限制是否已在DBMS_SCHEDULER中解除?

1 个答案:

答案 0 :(得分:1)

是的,你可以:

DECLARE
BEGIN
  dbms_scheduler.create_job  
 (job_name => 'TEST1',  
  job_type=> 'PLSQL_BLOCK',
  job_action=>'BEGIN dbms_scheduler.create_job  
              (job_name => ''TEST2'',  
               job_type=> ''PLSQL_BLOCK'',
               job_action=>''DECLARE v_result NUMBER; BEGIN SELECT 1 INTO v_result FROM dual; END;'',  
               start_date=>SYSDATE,
               repeat_interval=>''FREQ=DAILY'',
               end_date=>SYSDATE+1,
               enabled=>true,  
               auto_drop=>false,  
               comments=>''Job submitted FROM a job''); end;',  
  start_date=>SYSDATE,
  repeat_interval=>'FREQ=DAILY',
  end_date=>SYSDATE+1,
  enabled=>true,  
  auto_drop=>false,  
  comments=>'Job to submit a job');  
END;  

这证明了这个概念。您可以调用过程而不是内联PL / SQL块来完成作业提交。显然,您可以调整create_job过程中的任何或所有参数。我猜你可能会产生一份可以产生另一份工作的工作。