當前位置:首頁 » 存儲配置 » oracle時間存儲過程

oracle時間存儲過程

發布時間: 2023-06-06 07:24:06

A. Oracle存儲過程的參數中帶入日期條件,如條件中有'YYYY-MM-DD'

雙引號? 還是兩個單引號?
to_date(''2013/7/2'', ''yyyy-mm-dd'')

B. 怎樣實現每天自動執行oracle的存儲過程一次

用job
oracle定時器調用存儲過程
1.創建一個表,為了能清楚看到定時器的運行情況我們創建一個帶有日期欄位的表
sql代碼
create table job_table(run_time date);

create table job_table(run_time date);
2.創建存儲過程
Sql代碼
create or replace procere job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;

create or replace procere job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3.創建job,並且指定為一分鍾執行一次
Sql代碼
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;

declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.創建之後自動處於運行狀態,我們查詢job表,看看我們創建的job
Sql代碼
select job,broken,what,interval,t.* from user_jobs t;

select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...

參數介紹
job job的唯一標識,自動生成的
broken 是否處於運行狀態,N;運行;Y:停止
what 存儲過程名稱
interval 定義的執行時間

補充:
描述 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)''

C. oracle存儲過程時間調用

用dbms_job包,以下是例子。

declare
n_job_01 binary_integer;
begin
-- 每分鍾執行一次
dbms_job.submit(n_job_01,'你調的東西',sysdate,'TRUNC(sysdate,』mi』) + 1 / (24*60)');
-- 凌晨兩點執行
dbms_job.submit(n_job_01,'你調的東西',sysdate,'TRUNC(sysdate) + 1 + 2/24');
-- 每周一凌晨2點執行 周一是每周的第二天next_day(sysdate,2)同理周二是第三天,next_day(sysdate,3)
dbms_job.submit(n_job_01,'你調的東西',sysdate,'TRUNC(next_day(sysdate,2))+2/24');
-- 每月1日凌晨兩點執行
dbms_job.submit(n_job_01,'你調的東西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+1+2/24');
-- 每季第一天凌晨兩點執行
dbms_job.submit(n_job_01,'你調的東西',sysdate,'TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24');
-- 每年7月1日和1月1日凌晨2點
dbms_job.submit(n_job_01,'你調的東西',sysdate,'ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24');
-- 每年1月1日凌晨2點執行
dbms_job.submit(n_job_01,'你調的東西',sysdate, 'Add_months(trunc(sysdate,'yyyy'), 12) +2/24');
end;
打字不易,如滿意,望採納。

D. oracle存儲過程超時時間設置

在sqlnet.ora中設置參數如需要設置客戶端空閑10分鍾即被中斷,則在sqlnet.ora的末尾添加SQLNET.EXPIRE_TIME=10注:sqlnet.ora文件的路徑在$ORACLE_HOME/network/admin下。

E. oracle中如何得到執行存儲過程的開始和結束時間

需要在存儲過程中定義的時候把開始執行時間和結束時間列印出來。

舉例如下:

創建存儲過程:

createorreplaceprocerep_test
as
v_begintimevarchar2(20);
v_endtimevarchar2(20);
v_strvarchar2(10);
begin
v_begintime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
select'badkano'intov_strfromal;
v_endtime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');
dbms_output.put_line('開始時間為:'||v_begintime);
dbms_output.put_line('結束時間為:'||v_endtime);
end;
end;

執行存儲過程:

begin
p_test;
end;

執行結果:

說明:由於樣例存儲過程過於簡單,但在進行過多數據處理的時候,看到的結果會比較明顯。

F. oracle存儲過程:目的保存當前時間7天以前的數據,其他時間段的數據自動刪除。

我覺得你這個不是7天執行一次, 應該是每天執行,然後每次執行刪除當前日期7天前的數據,假如你這個表有一個數據日期的欄位。
create or procere deletehisdata
is
v_date date;
bengin
v_date := to_date(sysdate,'yyyymmdd');
delete from tablename a where v_date - to_date(a.sjrq,'yyyymmdd')>7;
commit;
end

G. ORACLE 存儲過程 建立時間類變數

V_DATE DATE;
SELECT TRUNC(SYSDATE,'MM') INTO V_DATE FROM DUAL;
SELECT LAST_DAY(SYSDATE) INTO V_DATE FROM DUAL;

SELECT TRUNC(ADD_MONTHS(SYSDATE,-1),'MM') INTO V_DATE FROM DUAL;
SELECT LAST_DAY(ADD_MONTHS(SYSDATE,-1)) INTO V_DATE FROM DUAL;

SELECT TRUNC(ADD_MONTHS(SYSDATE,-11),'MM') INTO V_DATE FROM DUAL;
SELECT LAST_DAY(ADD_MONTHS(SYSDATE,-11)) INTO V_DATE FROM DUAL;

SELECT TRUNC(ADD_MONTHS(SYSDATE,-12),'MM') INTO V_DATE FROM DUAL;
SELECT LAST_DAY(ADD_MONTHS(SYSDATE,-12)) INTO V_DATE FROM DUAL;

H. oracle定時執行存儲過程的時間區間問題

目測, 你的存儲過程, 需要在 下面這些時刻運行:
1:00
3:00
5:00
7:00
16:00
18:00
20:00
22:00
CREATE OR REPLACE PROCEDURE other_proc
AS
vHour VARCHAR(2);
BEGIN
vHour := 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;
begin
dbms_job.submit(:jobno, 'other_proc;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')');
commit;
end;
/

熱點內容
加密狗是啥 發布:2025-02-06 03:48:03 瀏覽:552
phpcopy文件 發布:2025-02-06 03:41:26 瀏覽:410
系統配置頁面怎麼設置 發布:2025-02-06 03:36:34 瀏覽:693
家庭電腦搭建流媒體伺服器 發布:2025-02-06 03:19:02 瀏覽:342
matlab稀疏矩陣存儲 發布:2025-02-06 03:07:54 瀏覽:838
國際服2b2t伺服器地址 發布:2025-02-06 03:06:28 瀏覽:390
c語言輸出b 發布:2025-02-06 03:06:27 瀏覽:31
普通火車wifi密碼多少 發布:2025-02-06 03:04:20 瀏覽:436
可編程監控 發布:2025-02-06 03:03:33 瀏覽:645
c語言取隨機數 發布:2025-02-06 02:46:57 瀏覽:863