Oracle定時任務小案例

2022-08-02 20:00:12 字數 1999 閱讀 7386

乙個資料表中包含此資料的錄入時間,此資料的初始狀態是有效,五天後系統自動置該資料的狀態為無效

寫乙個儲存過程,用於更新字段(改狀態);

寫乙個job,用於定時執行儲存過程;

前提條件:此資料的狀態為有效狀態;

獲取當前系統時間;

獲取資料輸入時間;

計算二者差值;如果二者差值大於5,置資料狀態為無效,反之,不做操作。

設定每天0:00自動執行儲存過程;(為了盡快看到測試結果,這裡設定時間為每分鐘執行一次job。)

建立表

--建立表

create table test(name varchar2(30), passwd varchar2(30),inputtime date,status varchar2(2));

插入資料

--插入資料

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;

dbms_output.put_line('name='||c_name||', passwd='||c_pass||', inputtime='||c_inputtime||' status='||c_status);

insert into test (name,passwd,inputtime,status) values (c_name,c_pass,c_inputtime,c_status);

c_name := 'testuser';

c_pass := 'testpass';

end loop;

commit;

end;

儲存過程

--建立儲存過程,用於更新status

create or replace procedure pro_test is

begin

declare

num number :=5;

d date;

cursor cur_test is

select name,inputtime,status from test where status='01' order by inputtime desc;--建立游標,用於儲存結果集

begin

select sysdate into d from dual;--獲取系統時間

for temp in cur_test

loop

if round(to_number(d-temp.inputtime))>num then

update test set status='00' where name = temp.name;--更新表資料

end if;

end loop;

commit;--提交事務

end;

end pro_test;

定時任務

declare

job_test number;

begin

dbms_job.submit(job_test, 'pro_test;',sysdate, 'sysdate+1/24/60');--每分鐘執行一次

end;

oracle 定時任務

在pl sql 中執行命名 第一步 開啟乙個sql window 視窗,建立一張測試表 create table test date a date 第二步 建立儲存過程 create or replace procedure test myproc asbegininsert into test d...

oracle定時任務

1.建立儲存過程 create orreplace procedure proc test isbegin insert into test values 1 2 commit end prc job test 2.建立任務 declare job number begin sys.dbms job...

Oracle定時任務

建立表 create table test carno varchar2 30 carinfoid number 建立儲存過程 create or replace procedure pro test ascarinfo id number begin select s carinfoid.next...