ORACLE中JOB的使用

JOB:和JAVA中的job相似,都是定時任務。oracle

首先,建表:app

-- Create table
create table MYDAILYDK
(
  ID     NUMBER(19) not null,
  NAME   VARCHAR2(255),
  DKTIME DATE
)
tablespace NG_DATA
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

而後,建個存儲過程,用來向表裏插入數據:函數

create or replace procedure mbproc_mydailydk

as

begin

insert into mydailydk(id,name,dktime)
values(s_madailydk.nextval,'小明',sysdate);
commit;

end;

JOB參數簡介:spa

/**    job參數是由Submit()過程返回的binary_ineger。這個值用來惟一標識一個工做。 
    what參數是將被執行的PL/SQL代碼塊。 
    next_date參數指識什麼時候將運行這個工做。 
    interval參數什麼時候這個工做將被重執行。 
    no_parse參數指示此工做在提交時或執行時是否應進行語法分析——TRUE 
    指示此PL/SQL代碼在它第一次執行時應進行語法分析, 
    而FALSE指示本PL/SQL代碼應當即進行語法分析。
    */
code

建立JOB:htm

begin
  sys.dbms_job.submit(job => :job,
                      what => 'mbproc_mydailydk;',
                      next_date => to_date('08-11-2016 14:22:08', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+1');
  commit;
end;

說明:ORACLE會自動生成惟一的JOB標識,就是submit的第一個參數。rem

查看建立的job:文檔

select * from user_jobs;

手動運行Job,參數爲自動生成的惟一標識,個人是64,把:job換成64便可,因爲個人開始時間是sysdate,手動天天的這個時候去執行一次,所以查看存儲過程當中插入的表會有一條數據插入:get

begin
  dbms_job.run(:job);
  end;

查看被插入的表:it

select * from mydailydk;

中止job:

begin
     
       dbms_job.broken(64, true);
     
  end;

刪除job:

begin
     
       dbms_job.remove(64);
     
  end;

另外,關於 dbms_job 這個pakage中的其它函數請自行查閱:change()、Interval()、Isubmit()、Next_Date()等等。

附上pakage的文檔的鏈接:

https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_job.htm#i1000681

相關文章
相關標籤/搜索