您的位置:首页 > 其它

存储过程触发器job简单示例

2012-08-07 16:02 183 查看
drop table test1;

create table test1(

FID varchar2(44) primary key not null,

FNAME varchar2(80) ,

FAGE integer

);

drop table test2;

create table test2(

FID varchar2(44) primary key not null,

FNAME varchar2(80),

FAGE integer ,

FSEX varchar2(20)

);

---插入触发器---------------------------------------------------------------------------------------

drop trigger trig_insert_test;

create or replace trigger trig_insert_test

after insert on test1

referencing new as new_value

for each row

begin

insert into test2(FID,FNAME,FAGE) values(:new_value.fid,:new_value.fname,:new_value.fage);

end;

=====================================

create or replace trigger trigger_insert_test

after insert on test1

referencing new as new_value

for each row

begin

insert into test(FID,FNAME,FAGE) values(:new_value.fid,:new_value.fname,new_value.fage)

end;

=====================================

insert into test1(FID,Fname,fage) values(1,'mark',19);



---更新触发器-----------------------------------------------------------------------------------

create or replace trigger trig_update_test

after update on test1

referencing new as new_value

for each row

begin

update test2 set fname = :new_value.fname,

fage = :new_value.fage

where fid = :new_value.fid;

end;

update test1 set fname = 'molica' ,fage = '16' where fid = '1';

---删除触发器------------------------------------------------------------------------------

create or replace trigger trig_delete_test

before delete on test1

referencing old as old_value ---注意,删除触发器用的是old

for each row

begin

delete from test2

where fid = :old_value.fid;

end;

delete from test1 where fid='1';

insert into test1 select fid,fname,fage from test2;

------------------------用过程实现test1与test2同步----------------------------------------

create or replace procedure test1_procedure_test2 as

exc_param varchar2(200);

begin

merge into test1 t1

using test2 t2

on (t1.fid = t2.fid)

when matched then

update set t1.fname = t2.fname, t1.fage = t2.fage

when not matched then

insert

(t1.fid, t1.fname, t1.fage)

values

(t2.fid, t2.fname, t2.fage);

commit;

exception

when others then

exc_param := sqlerrm;

rollback;

end test1_procedure_test2;

--------------------------------------------------------------------------------------------

--------------------调用存储过程---------------------------

begin

test1_procedure_test2;

commit;

end;

-----------------------------------------------------------------

----------------------------创建job-----------------------------

declare jobEvd number;

begin

sys.dbms_job.submit(jobEvd,'test1_procedure_test2;',sysdate,''sysdate+1/1440'');--每隔1分钟执行1次

commit;

end;

-------------------------------------------------------------------------------------------------

---------------------------------删除job-------------------------------

begin

dbms_job.remove(202);----202 job编号

end;

------------------------------------------------------------------------------------------

-----------------------------------查看job------------------------------------------------

select * from user_jobs

-----------------------------------------------------------------------------------------------

--------------------------------运行job---------------------------------------------

begin

dbms_job.run(202);

end;

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