在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下多個存儲過程串行執行
