Oracleは、スケジュールされたタスクを作成します

。1-1テストテーブル作成
 (ID整数、ADD_TIME日)を作成job_test 2テーブルと、
 3 
 ストアドプロシージャを作成し4 --2。
 5手順prc_job_testを作成するか、または交換されている。   
 6始める。   
 job_test値(SEQ_TM_ID.nextval、SYSDATE)INTO 7 INSERT。 ;   
 8コミット;   
 9エンドprc_job_test; 
10 
。。11 --- 3タスクを作成
12はDECLAREで   
13 tm_job数であり、   
14開始   
15 sys.dbms_job.submit(tm_job、 -タスク名   
16 'prc_job_testを;' -の実行中に、   
17 SYSDATE -実行時間   
18 'SYSDATE + 1 /(24 * 60 * 10)'); - 次の実行時間   
。19 END; 
20である
。図21は、照会タスク--4で
22 DBA_JOBS SELECT * FROMであり; 
23れます
。ADD_TIMEのDESCによってjob_test注文から24 SELECT * T、Tのt.rowid 
25 
26 --5タスクである。
27開始   
28 dbms_job.run(25); -タスクID 25   
29 END;    
30 
31 --6あります。タスクストップ
32を開始する
33(SYSDATE、trueに、25)DBMS_JOB.BROKENれ、
34コミットである
; 35エンド
36 
ìタスク削除37 [7。
開始され38   
39 DBMS_JOB.REMOVE(25);   
40 END;   
コードをコピー
1 --8删除任务脚本
2が始まる
ループ( 'prc_job_test'何= DBA_JOBSからジョブを選択)で、V 3を
4 DBMS_JOB.REMOVE(v.job)。
5エンドループ。
6コミット; 
7 END;
コードをコピー

 



コードをコピー

 

完全なスクリプトの例:

 

コードをコピー
。スクリプト表削除1-1 
 ; 2 NUMBER NUM DECLAREを
 3 BEGIN 
 4 SELECT。
 5 COUNT INTO NUM。(1)
 6から。
 7 USER_TABLES。
 8 WHERE。
 9 TABLE_NAME = 'JOB_TEST'; 
10 1 THEN IF NUMが= 
。11 EXECUTE IMMEDIATE ' 
12は、ドロップテーブルでありますjOB_TEST 
13である
; 14 END IF 
; 15 END 
16 / 
テストテーブル作成--2 .. 17 
; 18をテーブルjob_test(ID整数、ADD_TIME日)作成されている
19 /。
20ストアドプロシージャを作成することである--- 3。
21 PRC_JOB_TESTであるプロシージャを作成または交換   
22は開始   
23 job_test値にインサートである(1、SYSDATE);   
24 COMMIT;   
25エンドprc_job_test; 
26れます/
27--4ジョブスクリプトを削除します。
28を始める
(何= 'PRC_JOB_TEST;' DBA_JOBSから仕事SELECT)にVのための29のループ
30 DBMS_JOB.REMOVE(v.jobする); 
; 31は、エンドループで
コミット32; 
33はエンドであり、
34は/ 
。35--5タスクを作成
36 DECLARE   
37 tm_job番号;   
38が開始され   
39 sys.dbms_job.submit(tm_job、 -タスク名   
40 'PRC_JOB_TESTを;'、 -処理が行わ   
41 SYSDATEは、 -実行時間   
42「SYSDATE + 1 /(24 * 60 * 10)「); -次の実行時間   
43は、COMMITであり; 
44端部である、

元のリンクします。https://www.cnblogs.com/zyx-/p/8032954.html

おすすめ

転載: www.cnblogs.com/irishua/p/11263049.html