存储过程触发器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;
------------------------------------------------------------------------------------
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;
------------------------------------------------------------------------------------
相关文章推荐
- MySQL 触发器、存储过程、事务简单示例
- MySQL 触发器 存储过程 自定义函数 视图 简单示例
- MySQL 触发器 存储过程 自定义函数 视图 简单示例
- 触发器和存储过程简单实例
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- 简单创建序列和触发器示例
- Mysql常用命令、简单查询、游标、存储过程、触发器简单介绍
- oracle9i存储过程、触发器、函数简单实例(基于PL/SQL7.1)
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- oralce有关建表,建序列,建触发器,建存储过程,建job定时任务小例子,仅供本人参考
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- 关于事务,存储过程,触发器的简单例子
- 简单说说MYSQL的触发器(例子包括了存储过程)
- Oracle数据库简单触发器示例
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- oracle中函数和存储过程简单示例-动态sql
- MySQL触发器简单用法示例
- Oracle 简单知识应用,涉及序列、触发器、游标、存储过程、函数等
- 数据库中的事务、存储过程和触发器的简单使用