Oracle數據庫中dbms_job下多個存儲過程串行執行


在Oracle定時任務中,一個JOB下可以有多個存儲過程。那么這些存儲過程是采用並行執行還是串行執行呢?

往下看:

--寫一個最簡單的例子
--創建表與存儲過程,讓存儲過程循環插入1-10000
create or replace procedure A_TEST is
TJ_COUNT NUMBER :=0;

begin
   while TJ_COUNT < 100000 LOOP

   begin   

         TJ_COUNT:= TJ_COUNT + 1;
         insert into a_test_su(num) values (TJ_COUNT);
         commit;
   end;

   end LOOP;

end A_TEST;

 

再寫一個存儲來獲取上面存儲過程插入的數據

--創建表與存儲過程
--獲取上面表的數據的最大值或者是所有數據的和 create or replace procedure A_A is tj_count number:=0; begin select sum(num) into tj_count from a_test_su; dbms_output.put('tjsl:'); dbms_output.put_line(tj_count); insert into a_a_test(num) values (tj_count); commit; end A_A;

 

單獨執行一下 procedure A_TEST,看看數據的和是多少

我上面的例子得出的值是:5000050000

那么,接下來創建job后執行看看數據是不是5000050000

--創建job,注意兩個存儲的先后循序
begin
  sys.dbms_job.submit(job => :job,
    what => 'A_TEST;A_A;',
    next_date => to_date('15-04-2020 15:02:22', 'dd-mm-yyyy hh24:mi:ss'),
    interval => 'sysdate+1');
  commit;
end;

執行job后查詢表 a_a_test數據中兩條數據一致,說明:

dbms_job下多個存儲過程串行執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM