**首先用乙個完整的例子來實現定時執行儲存過程。 **
任務目標:每小時向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返回的個數一樣...