Oracle定時任務小案例
阿新 • • 發佈:2019-02-06
需求簡述
一個數據表中包含此資料的錄入時間,此資料的初始狀態是有效,五天後系統自動置該資料的狀態為無效。
方案
- 寫一個儲存過程,用於更新欄位(改狀態);
- 寫一個job,用於定時執行儲存過程;
方案邏輯
儲存過程
- 前提條件:此資料的狀態為有效狀態;
- 獲取當前系統時間;
- 獲取資料輸入時間;
- 計算二者差值;如果二者差值大於5,置資料狀態為無效,反之,不做操作。
Job
- 設定每天0:00自動執行儲存過程;(為了儘快看到測試結果,這裡設定時間為每分鐘執行一次job。)
測試小案例
建立表
--建立表 create table test(name varchar2(30), passwd varchar2(30),inputtime date,status
插入資料
--插入資料 declare c_name varchar2(30) := 'TestUser'; c_pass varchar2(30) := 'TestPass'; c_inputTime date; c_status varchar2(2) := '01'; begin select sysdate into c_inputTime from dual; for i in 0..99 loop c_name := c_name || to_char(i); c_pass := c_pass || to_char(i); c_inputTime := c_inputTime-1
儲存過程
--建立儲存過程,用於更新status
定時任務
declare job_test number; begin dbms_job.submit(job_test, 'pro_test;',sysdate, 'sysdate+1/24/60');--每分鐘執行一次 end;