如何使用Oracle job 定時刪除某條記錄?下文幾步方法教你完成!
1,創建表
create table CJ_JT_NSRCPDMDY
(
ID VARCHAR2(40) not null primary key,
CPBH VARCHAR2(80) not null,
NSRBH VARCHAR2(80) not null,
BZ VARCHAR2(80)
);
2,測試數據
insert into CJ_JT_NSRCPDMDY values(1,001,001,'啟用');
insert into CJ_JT_NSRCPDMDY values(2,002,002,'啟用');
insert into CJ_JT_NSRCPDMDY values(3,003,003,'不啟用');
3,創建一個刪除垃圾記錄的存儲過程
create or replace procedure mypro as
begin
delete from CJ_JT_NSRCPDMDY where BZ = '不啟用';
end;
/
過程已創建
4,創建JOB,實現每個月第一天的午夜12點刪除CJ_JT_NSRCPDMDY中不啟用的記錄。
variable job number;
begin
dbms_job.submit(:job,'mypro;',trunc(last_day(sysdate)+1),'trunc(last_day(sysdate)+1)');
commit;
end;
/
//////////////////////////////////////////////////////////////////
以上即可完成任務,不要往下執行啦。否則,創建作業時,就馬上啟動作業了。
/////////////////////////////////////////////////////////////////
5,運行JOB
begin
dbms_job.run(:job);
end;
/
過程已成功完成
6,select * from CJ_JT_NSRCPDMDY;
得到預期結果//這個地方應該是查出來3條記錄才對,可是已經把不啟用的記錄提前刪除啦。不知道為什麼。
7、刪除JOB
begin
dbms_job.remove(:job);
end;
/
過程已成功完成