--2.用一个视图"封装"了一下链接服务器下的一张表 create view v_ora_employ as --TESTORACLE链接服务器名 select * from TESTORACLE..SCOTT.EMPLOY_EPL
--3.SQL2008表employ_epl建立触发器,用表EmployLastRec_Sql记录下操作的标识 --modiid等于1为insert,2为delete,3为update,字段isexec标识该条记录是否已处理,0为未执行的,1为已执行的 create trigger trg_employ_epl_insert on employ_epl for insert as insert into EmployLastRec_Sql(modiid,IsExec,epl_employID,epl_employName,epl_Sex) select "1","0",epl_employID,epl_employName,epl_Sex from inserted
create trigger trg_employ_epl_update on employ_epl for update as insert into EmployLastRec_Sql(modiid,IsExec,epl_employID,epl_employName,epl_Sex) select "3","0",epl_employID,epl_employName,epl_Sex from inserted
create trigger trg_employ_epl_delete on employ_epl for delete as insert into EmployLastRec_Sql(modiid,IsExec,epl_employID,epl_employName,epl_Sex) select "2","0",epl_employID,epl_employName,epl_Sex from deleted --4.创建存储过程进行导数到ORACLE --使用游标逐行提取EmployLastRec_Sql记录,根据modiid判断不同的数据操作,该条记录处理完毕后把isexec字段更新为1. create proc sp_EmployLastRec_Sql as --epl_employID,epl_employName,epl_Sex declare @modiid int declare @employID varchar(30) declare @employName varchar(50) declare @sex int
--字段IsExec标识该条记录是否已处理,0为未执行的,1为已执行的 if not exists(select * from EmployLastRec_Sql where IsExec=0) begin truncate table EmployLastRec_Sql----不存在未执行的,则清空表 return end
declare cur_sql cursor for select modiid,epl_employID,epl_employName,epl_Sex from EmployLastRec_Sql where IsExec=0 order by [id]--IsExec 0为未执行的,1为已执行的
open cur_sql fetch next from cur_sql into @modiid,@employID,@employName,@sex while @@fetch_status=0 begin if (@modiid=1) --插入 begin ----将数据插入到ORACLE表中 insert into v_ora_employ(epl_employID,epl_employName,epl_Sex)values(@employID,@employName,@sex) end
if (@modiid=2) --删除 begin delete from v_ora_employ where epl_employID=@employID end
if (@modiid=3) --修改 begin update v_ora_employ set epl_employName=@employName,epl_Sex=@sex,epl_data=getdate() where epl_employID=@employID end
update EmployLastRec_Sql set IsExec=1 where current of cur_sql
fetch next from cur_sql into @modiid,@employID,@employName,@sex end