利用job并行执行Oracle存储过程

时间:2021-08-31 07:45:54
  • -- 建立测试表  
  • CREATE TABLE t (a NUMBER);  
  •   
  • -- 建立存储过程  
  • CREATE OR REPLACE PROCEDURE p_parallel (p_min IN NUMBER, p_max IN NUMBER)  
  • IS  
  • BEGIN  
  •    INSERT INTO t  
  •       SELECT TRUNC (DBMS_RANDOM.VALUE (p_min, p_max)) FROM DUAL;  
  •   
  •    COMMIT;  
  • END p_parallel;  
  • /  
  •   
  • -- 建立job  
  • DECLARE  
  •    x   NUMBER;  
  • BEGIN  
  •    sys.DBMS_JOB.submit (  
  •       job         => x,  
  •       what        => 'p_parallel(1,20);p_parallel(21,40);p_parallel(41,60);p_parallel(61,80);',  
  •       next_date   => TO_DATE ('14-05-2013 00:00:00''dd-mm-yyyy hh24:mi:ss'),  
  •       interval    => 'trunc(sysdate+1)',  
  •       no_parse    => FALSE);  
  •    SYS.DBMS_OUTPUT.put_line ('Job Number is: ' || TO_CHAR (x));  
  •    COMMIT;  
  • END;  
  • /  
  •   
  • -- 测试  
  • TRUNCATE TABLE t;  
  • EXEC dbms_job.run(101);  
  •   
  • SELECT * FROM t;