當前位置:首頁 » 存儲配置 » oracle定時任務存儲過程

oracle定時任務存儲過程

發布時間: 2023-03-24 20:36:08

Ⅰ 求大俠幫忙寫個ORACLE的存儲過程,外加一個定時任務每天0點調用它。

create or replace procere p_MAKE_REPORT_DATA_TMP as
begin
insert into MAKE_REPORT_DATA_TMP
(STATE_DATE,
AREANO,
AREANAME,
CARDTYPE,
CARDTYPENAME,
CHARGETYPE,
CREATE_SEQ,
CARD_ATTR,
CARD_RANGE,
PRINT_SORT,
CARD_FACE_VALUE,
CARD_ACTUAL_VALUE,
CREATE_DATE,
ACTIVE_DATE,
PRE_STATE,
CUR_STATE,
CARD_COUNT,
CHARGE_SUM,
VALUE_SUM)
select trunc(t.state_date),
a.full_area_code areano,
a.areaname areaname, --地區
t.card_type cardtype,
p.type_name cardtypename, --卡類型
t.charge_type chargetype,
t.create_seq,
t.card_attribute,
t.card_range_type,
a.print_sort,
c.charge card_face_value, --卡知雀面額額
c.value card_value, --卡實際金額
trunc(t.create_date) create_date, --創卡時棗兄間
trunc(t.active_date) active_date, --激活時間
t.pre_state pre_state, --前狀態
t.state cur_state, --當前狀態
count(t.card_id), --卡數
NVL(SUM(c.charge), 0), --面值總額搭岩早
--NVL(SUM(c.value),0) --實際值總額
NVL(SUM(decode(nvl(p.business_type, 0), 1, c.charge, c.value)),
0) --實際值總額
from view_card_acct_data t,
card_type p,
card_charge_type c,
card_area a,
card_attribute b,
card_range_type d
where a.areano = t.card_area
and p.card_type = t.card_type
and c.charge_type = t.charge_type
and b.attribute_id = t.card_attribute
and d.range_type = t.card_range_type
and p.card_type <> '0'
group by trunc(t.state_date),
a.full_area_code,
a.areaname,
t.card_type,
p.type_name,
t.charge_type,
t.create_seq,
t.card_attribute,
t.card_range_type,
a.print_sort,
c.charge,
c.value,
trunc(t.create_date),
trunc(t.active_date),
t.pre_state,
t.state;
commit;
exception
when others then
rollback;
end p_MAKE_REPORT_DATA_TMP;

--- 創建定時任務JOB
declare
v_jobid number;
begin
sys.dbms_job.submit(job => v_jobid,
what => 'p_MAKE_REPORT_DATA_TMP;',
next_date => trunc(sysdate+1),
interval => 'sysdate+1');
commit;
end;

Ⅱ oracle 添加一個計劃任務 每天凌晨兩點 定時執行一個存儲過程 求詳細步驟!!急!!

在你的存儲過程裡面定義一個變數:
v_HH24 CHAR(2) := '00';

begin後面給變數賦值:
v_HH24 := to_char(sysdate, 'HH24');

然後在你執行的代碼外羨友核面加上:
IF v_HH24 = '02'兄掘 THEN

你的代碼;
end if;
然告游後使用下面的腳本創建job:

begin
sys.dbms_job.submit(job => :job,
what => '你的存儲過程名字;',
next_date => to_date('01-06-2013 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE+60/1440');
commit;
end;
/

Ⅲ oracle資料庫如何啟動時自動執行定時任務job

oracle資料庫如何啟動時自動執行定時任務job
job定時任務需要依託存儲過程。
1、創建存儲過程:create or replace procere MYPROC as
begin
insert into TEST values(sysdate);
end;

2、創建job

variable job1 number;
begin
dbms_job.submit(:job1,'MYPROC;',trunc(sysdate+1),'sysdate+1');--從今晚12開始運行,以後每天運行一次
end;

Ⅳ oracle 創建定時任務執行存儲過程

可以用圖形化界面來創建JOB,如圖:在PL/sql的項目DBMS_JOBS中進行新建。

填寫好上面標紅的地方後,點擊應用即可生成計劃!

Ⅳ 怎樣實現每天自動執行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)''

Ⅵ oracle中怎麼讓帶有輸入參數的存儲過程定時執行

兩種方法
1。oracle中有 [作業] 功能,創建一個作業,然後,設置定時執行。
2。用系統的[定時任務],定一個時間,然後調用bat文件,從bat中調用oracle的存儲過程。

Ⅶ Oracle存儲過程中的定時執行方法有哪些

定時執行在linux中有個叫crontag,用於設置周期性被執行的指令。這個不是oracle系統裡面的命令,而是linux或Unix系統裡面的命令。你可以在linux系統裡面定時登陸oracle然後執行你要制定的存儲過程。

Ⅷ oracle定時執行怎麼執行多個存儲過程

定時執行存儲過程,需要在job里定義;而執行多個存儲過程,則在job中定義多次即可。

運行環境:oracle 10g

1、定義其中一個job

declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'pro_bdc_bh(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;

注意:其中pro_bdc_bh為存儲過程名稱,TRUNC(sysdate) + 1 +2 / (24)為定義的運行時間為每日凌晨2點。

2、然後定義另外一個job

declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'p_test(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;

注意:這次運行的存儲過程名為p_test,運行時間同樣為每日凌晨2點。

3、創建job完成後,可通過具有創建job的賬號查詢創建是否成功,語句如下:

select*fromuser_jobs;

Ⅸ 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;
/

熱點內容
和平精英伺服器沒響應什麼情況 發布:2024-06-22 00:24:22 瀏覽:794
我的世界國服電腦版怎麼建伺服器 發布:2024-06-22 00:19:13 瀏覽:365
五月安卓手機怎麼樣 發布:2024-06-22 00:17:44 瀏覽:425
安卓系統如何發超長視頻 發布:2024-06-22 00:12:35 瀏覽:425
一字板編程 發布:2024-06-22 00:00:57 瀏覽:815
郭強買源碼 發布:2024-06-21 23:59:01 瀏覽:274
手機里的帳號和密碼在哪裡 發布:2024-06-21 23:54:02 瀏覽:57
伺服器高頻率點擊會怎麼樣 發布:2024-06-21 23:53:50 瀏覽:152
達林控制演算法 發布:2024-06-21 23:41:05 瀏覽:224
pid程序演算法 發布:2024-06-21 23:19:40 瀏覽:824