做報表時,需要讀取大量數(shù)據(jù)和進行復雜的計算,往往比較耗時,所以一般會將結(jié)果存放在一張結(jié)果表中,報表直接讀取結(jié)果表,這樣就會很快了。此時,為了更新結(jié)果表,獲得最新數(shù)據(jù),就需要定時執(zhí)行一些SQL語句,此時可以采用:存儲過程+job的方式來達到目的,具體步驟如下
創(chuàng)建存儲過程:
成都創(chuàng)新互聯(lián)公司專注于銅仁網(wǎng)站建設(shè)服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供銅仁營銷型網(wǎng)站建設(shè),銅仁網(wǎng)站制作、銅仁網(wǎng)頁設(shè)計、銅仁網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務,打造銅仁網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供銅仁網(wǎng)站排名全網(wǎng)營銷落地服務。
create or replace procedure datawarn.P_TEST is
begin
delete from test_table;
insert test_table select * from table1; --sql塊,即你要執(zhí)行的sql語句
commit; --sql塊
end;
執(zhí)行存儲過程(手動調(diào)用一次存儲過程):
EXEC 存儲過程名;
創(chuàng)建JOB:
begin
dbms_scheduler.create_job (
job_name => 'J_TEST', --JOB名稱
job_type => 'STORED_PROCEDURE',
job_action => 'P_TEST', --存儲過程名
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY; INTERVAL=10', -- 十分鐘一次
comments => 'JOB說明'
);
end;
ps:創(chuàng)建job的時候要小心一點,仔細檢查,不要寫錯信息,如果報錯,再次創(chuàng)建會導致創(chuàng)建不成功,可以換個job名稱嘗試一下
--啟動
begin
dbms_scheduler.enable('J_TEST');
end;
執(zhí)行
begin
dbms_scheduler.run_job(job_name => 'J_TEST',force => TRUE); -- true代表同步執(zhí)行
end;
停止
dbms_scheduler.stop_job(job_name => 'J_TEST',force => TRUE);
--DI JOB查詢
select * from tsc_jobstatus