-
從視覺上看,儲存過程需要在以下時刻執行:
create or replace procedure other_proc
asvhour varchar(2);
beginvhour := to_char(sysdate, 'hh24');
if vhour = '01' or vhour = '03' or vhour = '05' or vhour = '07'
or vhour = '16' or vhour = '18' or vhour = '20' or vhour = '22' then
呼叫您的儲存過程。
既然沒有**,就暫時寫null;
null;end if;
end;variable jobno number;
begindbms_:jobno, 'other_proc;', trunc(sysdate+1/24,'hh'), 'trunc(sysdate+1/24,''hh'')');
commit;
end;
-
declare
v_date varchar2(8) := '20130312';
v_date1 date := to_date(v_date, 'yyyymmdd');
beginloop
程序名稱(v 日期);
v_date1 := v_date1 + 2/24;
v_date := to_char(v_date1, 'yyyymmdd');
exit when v_date1 >= sysdate;
end loop;
end;儲存過程應確定當前時間是否在該時間範圍內。
-
interval => 'sysdate+1'*間隔一天* 間隔的 sysdate 表示當前執行時間,並且您已經反轉了作業和過程。
它應該是乙個呼叫過程的工作,而不是在 proc 中定義乙個新作業
-
你甚至沒有給出錯誤訊息。
-
建立作業。 只要把時間寫好就行了。 PLSQL Develope工具書中有乙個圖形介面,用於建立新作業。
它用於定義名稱、呼叫的儲存過程的名稱和執行間隔。
-
在儲存過程的前面得到乙個時間,在最後得到乙個時間,如果是0,就減去2次,不要懷疑這種做法,記錄不超過10000條,測試應該看不到時差。
-
可以在儲存過程的開頭和結尾輸出時間。
dbms_'begin :'||to_char(sysdate,'yyyymmdd hh24:mi:ss');
-
在儲存過程中定義變數:
v_hh24 char(2) := '00';
開始:
v_hh24 := to_char(sysdate, 'hh24');
然後新增:
if v_hh24 = '02'然後是你的**;
end if;
然後使用以下指令碼建立作業:
begin> :job,what => '儲存過程的名稱; ',next_date => to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),interval => 'sysdate+60/1440');
commit;
end;/
-
你去看看如何在預言機中使用觸發器,我不太擅長使用它,多看就好了。
-
begin
10,what => 'insertsysdate;',next_date => sysdate,interval => 'sysdate+1/1440');
commit;
end;-作業編號 10 是自行指定的,或者您可以指定其他地方不存在的任何不超過 1000 的數字。
-
-- 如果 301 被占用,仍會報告錯誤,但如果未被占用,則將建立 301 作業
begin> 301,what => ' begin
insertsysdate;
end;',next_date => sysdate,interval => 'sysdate+1/1440');
commit;
end;