PL SQL之JOB用法 定時跑資料

2021-09-10 18:14:24 字數 4733 閱讀 9074

一、dbms_job包的用法

包含以下子過程:     

broken()過程。   

change()過程。   

interval()過程。   

isubmit()過程。   

next_date()過程。   

remove()過程。   

run()過程。   

submit()過程。   

user_export()過程。   

what()過程。   

1、broken()過程更新乙個已提交的工作的狀態,典型地是用來把乙個已破工作標記為未破工作。   

這個過程有三個引數:job   、broken與next_date。   

procedure   broken   (job               in   binary_integer,   

broken         in   boolean,   

next_date   in   date   :=sysdate)

job引數是工作號,它在問題中唯一標識工作。   

broken引數指示此工作是否將標記為破——true說明此工作將標記為破,而flase說明此工作將標記為未破。   

next_date引數指示在什麼時候此工作將再次執行。此引數預設值為當前日期和時間。   

2、change()過程用來改變指定工作的設定。   

這個過程有四個引數:job、what   、next_date與interval。   

procedure   change   (job                 in   binary_integer,   

what               in   varchar2,   

next_date     in   date,   

interval       in   varchar2)

此job引數是乙個整數值,它唯一標識此工作。   

what引數是由此工作執行的一塊pl/sql**塊。   

next_date引數指示何時此工作將被執行。   

interval引數指示乙個工作重執行的頻度。   

3、interval()過程用來顯式地設定重執行乙個工作之間的時間間隔數 

這個過程有兩個引數:job與interval。   

procedure   interval   (job             in   binary_integer,   

interval   in   varchar2)

job引數標識乙個特定的工作。interval引數指示乙個工作重執行的頻度。   

4、isubmit()過程用來用特定的工作號提交乙個工作

這個過程有五個引數:job、what、next_date、interval與no_parse。   

procedure   isubmit   (job               in   binary_ineger,   

what             in   varchar2,   

next_date   in   date,   

interval     in   varchar2,   

no_parse     in   booean:=false)

這個過程與submit()過程的唯一區別在於此job引數作為in型引數傳遞且包括乙個   

由開發者提供的工作號。如果提供的工作號已被使用,將產生乙個錯誤。   

5、next_date()過程用來顯式地設定乙個工作的執行時間。這個過程接收兩個引數:job與next_date。   

procedure   next_date(job                   in   binary_ineger,   

next_date       in   date)

job標識乙個已存在的工作。next_date引數指示了此工作應被執行的日期與時間。   

6、remove()過程來刪除乙個已計畫執行的工作。這個過程接收乙個引數:   

procedure   remove(job   in     binary_ineger);
job引數唯一地標識乙個工作。這個引數的值是由為此工作呼叫submit()過程返回的job引數的值。   

已正在執行的工作不能由呼叫過程式刪除。   

7、run()過程用來立即執行乙個指定的工作。這個過程只接收乙個引數:   

procedure   run(job   in   binary_ineger)
job引數標識將被立即執行的工作。   

8、使用submit()過程,工作被正常地計畫好。   

這個過程有五個引數:job、what、next_date、interval與no_parse。   

procedure   submit   (   job               out   binary_ineger,   

what             in     varchar2,   

next_date   in     date,   

interval     in     varchar2,   

no_parse     in     booean:=false)

job引數是由submit()過程返回的binary_ineger。這個值用來唯一標識乙個工作。   

what引數是將被執行的pl/sql**塊。   

next_date引數指識何時將執行這個工作。   

interval引數何時這個工作將被重執行。   

no_parse引數指示此工作在提交時或執行時是否應進行語法分析——true   

指示此pl/sql**在它第一次執行時應進行語法分析,   

而false指示本pl/sql**應立即進行語法分析。   

9、user_export()過程返回乙個命令,此命令用來安排乙個存在的工作以便此工作能重新提交。   

此程式有兩個引數:job與my_call。   

procedure   user_export(job                 in   binary_ineger,   

my_call         in   out   varchar2)

job引數標識乙個安排了的工作。my_call引數包含在它的當前狀態重新提交此工作所需要   

的正文。   

10、what()過程應許在工作執行時重新設定此正在執行的命令。這個過程接收兩個引數:job與what。   

procedure   what   (job     in   binary_ineger,   

what   in   out   varchar2)

job引數標識乙個存在的工作。what引數指示將被執行的新的pl/sql**。   

二、乙個簡單例子

建立測試表   

sql>   create   table   a(a   date);
表已建立。     

建立乙個自定義過程   

sql>   create   or   replace   procedure   test   as   

2     begin   

3     insert   into   a   values(sysdate);   

4     end;   

5     /

過程已建立。

建立job   

sql>   variable   job1   number;   

sql>     

sql>   begin   

2     dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分鐘,即一分鐘執行test過程一次   

3     end;   

4     /

pl/sql   過程已成功完成。   

執行job   

sql>   begin   

2     dbms_job.run(:job1);   

3     end;   

4     /

pl/sql   過程已成功完成。   

sql>   select   to_char(a,'yyyy/mm/dd   hh24:mi:ss')   時間   from   a;
時間   

-------------------   

2001/01/07   23:51:21   

2001/01/07   23:52:22   

2001/01/07   23:53:24   

刪除job   

sql>   begin   

2     dbms_job.remove(:job1);   

3     end;   

4     /

pl/sql   過程已成功完成。  

crontab 詳細用法 定時任務

使用crontab你可以在指定的時間執行乙個shell指令碼或者一系列linux命令。例如系統管理員安排乙個備份任務使其每天都執行 如何往 cron 中新增乙個作業?crontab e 0 5 root bin backup.sh 這將會在每天早上5點執行 root bin backup.sh cr...

crontab 詳細用法 定時任務

crontab 詳細用法 定時任務 使用 crontab你可以在指定的時間執行乙個shell指令碼或者一系列linux命令。例如系統管理員安排乙個備份任務使其每天都執行 如何往 cron 中新增乙個作業?crontab e 0 5 root bin backup.sh 這將會在每天早上5點執行 ro...

crontab 詳細用法 定時任務

使用crontab你可以在指定的時間執行乙個shell指令碼或者一系列linux命令。例如系統管理員安排乙個備份任務使其每天都執行 如何往 cron 中新增乙個作業?crontab e 0 5 root bin backup.sh 這將會在每天早上5點執行 root bin backup.sh cr...