ORACL儲存過程

2021-10-03 05:23:00 字數 1778 閱讀 3165

**首先用乙個完整的例子來實現定時執行儲存過程。 **

任務目標:每小時向test表中插入一條資料

實現方案:

1.通過 oracle 中 dbms_job 完成儲存過程的定時呼叫

2.在儲存過程中完成相應的邏輯操作

實現步驟:

1.建立乙個測試表

create table test(dtime date);

2.建立乙個儲存過程

create or replace procedure p_test as

begin

insert into test values(sysdate);

end;

3.建立執行計畫:每小時執行一次儲存過程

declare

i integer;

begin

dbms_job.submit(i,『p_test;』,sysdate,『sysdate+1/24』);

end;

4.執行執行計畫

declare

jobno integer;

begin

– 查詢計畫號

select t.job into jobno from user_jobs t ;

– 執行制定的執行計畫

dbms_job.run(jobno);

end;

5.檢視任務佇列情況

select job,next_date,next_sec,failures,broken from user_jobs;

7.停止執行計畫

declare

jobno integer;

begin

– 查詢計畫號

select t.job into jobno from user_jobs t ;

– 停止計畫,不再繼續執行

–dbms_job.broken(jobno,true);

– 停止計畫,並在兩分鐘後繼續執行

dbms_job.broken(jobno,true,sysdate+(2/24/60));

end;

8.刪除執行計畫

declare

jobno integer;

begin

– 查詢計畫號

select t.job into jobno from user_jobs t ;

dbms_job.remove(jobno);

end;

9.修改執行計畫

declare

jobno integer;

begin

– 查詢計畫號

select t.job into jobno from user_jobs t ;

– 修改為:每分鐘執行一次

dbms_job.interval(jobno, 『sysdate+1/(24*60)』);

end;

引數說明:

dbms_job.submit(jobno =>jobid,//對應的唯一id(jobid <-> jobname)唯一對映

procedurename=> 『your_procedure;』, //呼叫的儲存過程名稱

next_date => sysdate, //下次執行的時間(第一次執行的時間)

interval => 『sysdate+1/1440』); //每次執行間隔的時間

以上就是定時執行儲存過程的全部內容,留待後用吧。

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...