一、建立語句
declare
job number;
begin
dbms_job.submit(
job => job, /*自動生成job_id*/
what => 'proc_cam;',
next_date => to_date('2022-03-14 15:40:00', 'yyyy-mm-dd hh24:mi:ss'),
interval => 'sysdate+30/(24*60)' /*每隔30分鐘執行一次*/
);
commit;
end;
引數含義:
job:指定定時任務的 job_id,上面**指自動生成;
what:需要執行的儲存過程名稱或sql語句,多個以分號隔開,注意最後有個分號;
next_date:初次執行時間;
interval:多久執行一次。
二、查詢定時任務
當前使用者定時任務
select * from user_jobs;
有許可權訪問的定時任務
select * from all_jobs;
整個資料庫所有的定時任務
select * from dba_jobs;
查詢上面例子建立的定時任務:select * from dba_jobs where what like '%proc_cam%';指定兩次任務執行的時間間隔
描述interval 引數值
每天執行一次
'sysdate+1′
每小時執行一次
'sysdate+1/24'
每10分鐘執行一次
'sysdate+10/(24*60)'
每30秒執行一次
'sysdate+30/(24*60*60)'
每個星期執行一次
'sysdate+7'
也可以指定具體時間
描述引數值
每天6點 執行
'trunc(sysdate+1) + 6/24'
每天08:10:00 執行
'trunc(sysdate+1) + (8*60+10)/24*60'
每週一凌晨1點執行
' trunc(next_day(sysdate,"星期一"))+1/24'
每月1日凌晨1點執行
' trunc(last_day(sysdate))+1+1/24'
手動執行定時任務
begin
dbms_job.run(1283); --1283為job任務的 id
commit;
end;
停止定時任務
begin
dbms_job.broken(1283,true,sysdate); --1283為job任務的 id,sysdate是指在指定時間停止
commit;
end;
刪除定時任務
begin
dbms_job.remove(1283); --1283為job任務的 id
commit;
end;
修改定時任務的時間間隔
begin
dbms_job.interval(1283,interval => 'trunc(sysdate)+1'); /*第乙個引數為job的id,第二個引數為interval: 計算下一次任務執行的時間表示式*/
commit;
end;
修改下一次執行時間
begin
dbms_job.next_date(1283,to_date('2022-03-15 12:00:00','yyyy-mm-dd hh24:mi:ss')); /*第乙個引數:job的id;第二個引數:要修改後的計算下一次執行的時間表示式*/
commit;
end;
修改定時任務要執行的操作
begin
dbms_job.what(1283,'testjob2();'); /* 第乙個引數:job的id;第二個引數:要更改的新操作名稱(儲存過程名稱或sql語句,必須存在)*/
commit;
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...