如何使用oracle儲存過程結合定時job來達到定時刪除指定資料庫表資料的目的。
-- 建立 crxj_collect.test_table 表
create table crxj_collect.test_table
( seq number(8) primary key,
seqtime date
);-- 建立 crxj_collect.test_table_2 表
create table crxj_collect.test_table_2
( seq number(8) primary key,
seqtime date
);
-- 建立insert儲存過程
create or replace procedure crxj_collect.test_insert_proc is
begin
insert into crxj_collect.test_table(seq, seqtime)
values(nvl((select max(seq) from crxj_collect.test_table) +1, 0),sysdate);
insert into crxj_collect.test_table_2(seq, seqtime)
values(nvl((select max(seq) from crxj_collect.test_table) +2, 0),sysdate);
commit;
exception
when others then
rollback;
end test_insert_proc;
-- 建立delete儲存過程
create or replace procedure crxj_collect.test_delete_proc is
begin
delete from crxj_collect.test_table;
delete from crxj_collect.test_table_2;
commit;
exception
when others then
rollback;
end test_delete_proc;
使用command window來執行儲存過程:
sql>
sql> create or replace procedure crxj_collect.test_delete_proc is
2 begin
3 delete from crxj_collect.test_table;
4 delete from crxj_collect.test_table_2;
5 commit;
6 exception
7 when others then
9 rollback;
10 end test_delete_proc;
11 /
procedure created
sql>
右擊待測試的儲存過程(注意下圖是以另外乙個儲存過程作為例子,但是操作步驟一樣)
start debugger -> run
可以在dbms output欄目檢視是否有錯誤訊息。
可以檢視是否正常執行儲存過程(刪除資料)。
-- 建立定時insert job
var job_num number;
begin
dbms_job.submit(:job_num,'crxj_collect.test_insert_proc;',sysdate,'sysdate + 10/(24*60*60)');
end;
-- 建立定時delete job
var job_num number;
begin
dbms_job.submit(:job_num,'crxj_collect.test_delete_proc;',sysdate,'sysdate + 60/(24*60*60)');
end;
select * from user_jobs;
可以到對應測試表檢視資料
經過觀察,insert執行和delete執行皆正常。
完成。如果你需要修改的話,請這樣:
begin
dbms_job.change
(24,'crxj_collect.test_delete_proc;',sysdate,'sysdate + 1/24');
end;
first created by ifuteng#gmail.com 2014/4/15 PLSQL建立Oracle定時任務
plsql建立oracle定時任務 1 建立任務執行的儲存過程,如名稱為yxtestjob,向測試表中插入資料 2 定時器對應的dbms jobs資料夾,右鍵新建 new 3 建立任務 注 job的定時執行和時間間隔說明 在使用oracle最匹配的工具plsql的時候,如果用plsql建立定時器呢?...
PLSQL建立Oracle定時任務
1 在what值中填寫待執行的儲存過程,多個可以,隔開 2 在間隔中填寫執行時間策略 具體寫法見下述備註 間隔 interval是指上一次執行結束到下一次開始執行的時間間隔,當interval設定為null時,該job執行結束後,就被從佇列中刪除。假如我們需要該job周期性地執行,則要用 sysda...
PLSQL建立Oracle定時任務
在使用oracle最匹配的工具plsql的時候,如果用plsql建立定時器呢?下面我簡單介紹使用工具建立定時器的方法 回到頂部 1 在what值中填寫待執行的儲存過程,多個可以,隔開 2 在間隔中填寫執行時間策略 具體寫法見下述備註 間隔 interval是指上一次執行結束到下一次開始執行的時間間隔...