--首先要建立乙個測試資料庫.
create table test_tbl
( id number(12) not null,
c_data date
)--建立乙個序列.
create sequence test_seq
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
--建立乙個job呼叫的儲存過程.
create or replace procedure test_pro
isbegin
insert into test_tbl values(test_seq.nextval, sysdate);
dbms_output.put_line(sysdate);
end;
--呼叫submit方法來設定job例項.
declare
job number;
begin
sys.dbms_job.submit(job, --返回引數,用來接收job的id.
'test_pro;', --執行儲存過程名.
to_date('2012-09-18 22:22:22', 'yyyy-mm-dd hh24:mi:ss'), --執行時間.
'sysdate+1/1440'); --每天1440次.也就是說一分鐘執行一次.
end;
--查詢現有的job例項.
select * from dba_jobs
--呼叫run方法開始執行job.
begin
dbms_job.run(25);
end;
--呼叫remove方法刪除job.
begin
dbms_job.remove(24);
end;
--查詢以上方法是否成功.是否有資料寫入.
select count(*) from (select * from test_tbl order by id)
--刪除環境表.
drop table test_tbl
--刪除測試儲存過程.
drop procedure test_pro
dbms_job package 用法介紹
包含以下子過程:
broken()過程。
change()過程。
interval()過程。
isubmit()過程。
next_date()過程。
remove()過程。
run()過程。
submit()過程。
user_export()過程。
what()過程。
1、broken()過程更新乙個已提交的工作的狀態,典型地是用來把乙個已破工作標記為未破工作。
這個過程有三個引數:job 、broken與next_date。
procedure broken (job in binary_integer,
broken in boolean,
next_date in date :=sysdate)
job引數是工作號,它在問題中唯一標識工作。
broken引數指示此工作是否將標記為破——true說明此工作將標記為破,而flase說明此工作將標記為未破。 bitscn.com
next_date引數指識何時將執行這個工作。
interval引數何時這個工作將被重執行。
no_parse引數指示此工作在提交時或執行時是否應進行語法分析——true指示此pl/sql**在它第一次執行時應進行語法分析,而false指示本pl/sql**應立即進行語法分析。
9、user_export()過程返回乙個命令,此命令用來安排乙個存在的工作以便此工作能重新提交。
此程式有兩個引數:job與my_call。
procedure user_export(job in binary_ineger,
my_call in out varchar2)
job引數標識乙個安排了的工作。my_call引數包含在它的當前狀態重新提交此工作所需要的正文。
10、what()過程應許在工作執行時重新設定此正在執行的命令。這個過程接收兩個引數:job與what。
procedure what (job in binary_ineger,
what in out varchar2)
job引數標識乙個存在的工作。what引數指示將被執行的新的pl/sql**。
正在執行的job相關資訊
select sid, r.job, log_user, r.this_date, r.this_sec
from dba_jobs_running r, dba_jobs j
where r.job = j.job;
描述 interval引數值
每天午夜12點 'trunc(sysdate + 1)'
每天早上8點30分 'trunc(sysdate + 1) + (8*60+30)/(24*60)'
每星期二中午12點 'next_day(trunc(sysdate ), ''tuesday'' ) + 12/24'
每個月第一天的午夜12點 'trunc(last_day(sysdate ) + 1)'
每個季度最後一天的晚上11點 'trunc(add_months(sysdate + 2/24, 3 ), 'q' ) -1/24'
每星期六和日早上6點10分 'trunc(least(next_day(sysdate, ''saturday"), next_day(sysdate, "sunday"))) + (6×60+10)/(24×60)'
Oracle Job定時器的寫法
1 每分鐘執行 interval trunc sysdate,mi 1 24 60 2 每天定時執行 例如 每天的凌晨1點執行 interval trunc sysdate 1 1 24 3 每週定時執行 例如 每週一凌晨1點執行 interval trunc next day sysdate,星期...
簡單定時器實現
經常會遇到這樣的功能,需要開闢乙個執行緒同時迴圈的跑乙個任務,下面是簡單實現的 呼叫select 加超時時間 include include include include include void thread client timeout const void arg printf time o...
簡單軟體定時器
軟體定時器 在嵌入式開發中,定時器是及其常見的,但考慮到晶元外設資源有限,可以自己寫乙個軟體定時器,應用於對計時不是太嚴格的場合,比如led的閃爍,定時處理某一任務等等。該軟體定時器的原理是基於滴答系統時鐘中斷,在中斷中獲得時間基,該時間基可由使用者自由設定。另外有兩種方式可以實現軟體定時處理功能,...