您的位置:首页 > 其它

创建临时表-定时刷数据的存储过程及定时job

2015-01-26 14:03 344 查看
-- 创建临时表-定时刷数据的存储过程 _练习

create table test_gp(

org_name varchar2(50),

org_id varchar2(10),

agency_type varchar2(20),

xm_id varchar2(20),

lastUpdate date default sysdate

);

select * from test_gp;

begin

pd_test_gp;

end;

create or replace procedure pd_test_gp as

v_data_time_start date;

v_data_time_end date;

begin

v_data_time_start := sysdate - 1 / 3;

v_data_time_end := sysdate;

merge into siebel.test_gp dest

using (select ext.name, ext.row_id, xm.type,xm.row_id xm_id

from s_org_ext ext, s_org_ext_xm xm

where xm.par_row_id = ext.row_id

and xm.type in ('Agency', 'PA Agency Detail')

and ((ext.last_upd between v_data_time_start and v_data_time_end) or

(xm.last_upd between v_data_time_start and v_data_time_end))

) src

on (dest.org_id = src.row_id and dest.xm_id=src.xm_id)

when not matched then

insert

(org_id, org_name, agency_type,xm_id)

values

(src.row_id, src.name, src.type,src.xm_id)

when matched then

update set dest.org_name = src.name,dest.lastUpdate=sysdate where org_id = src.row_id;

commit;

end pd_test_gp;

--创建scheduler_练习

begin

begin

DBMS_SCHEDULER.drop_job('UPD_TEST_GP_JOB');

EXCEPTION

WHEN OTHERS THEN

NULL;

end;

DBMS_SCHEDULER.create_job(JOB_NAME => 'UPD_TEST_GP_JOB',

JOB_TYPE => 'PLSQL_BLOCK',

JOB_ACTION =>'BEGIN PD_TEST_GP; END;',

START_DATE => sysdate,

REPEAT_INTERVAL => 'freq = minutely; interval=10',

COMMENTS =>'更新TEST_GP表信息');

DBMS_SCHEDULER.enable('UPD_TEST_GP_JOB');

end;

select * from all_scheduler_jobs;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: