保存一个package的存储过程的实例,以备后用
package:
create or replace package pkg_sync_XXXXXXXXXXXXXX_migrate is
/**
Created : 2012-4-16 14:12
description :
**/
--入口1:全量同步XXXXXXXXXXXXXX
procedure proc_sync_XXXXXXXXXXXXXX_full(
p_maxid in number
);
--入口2:增量同步XXXXXXXXXXXXXX
procedure proc_sync_XXXXXXXXXXXXXX_incr;
--保存到XXXXXXXXXXXXXX表
procedure save_XXXXXXXXXXXXXX(
p_tag_id varchar2,
p_gmt_create date ,
p_creator varchar2,
p_gmt_modified date ,
p_modifier varchar2,
p_is_deleted char ,
XXX varchar2
);
end;
package body:
create or replace package body pkg_sync_XXXXXXXXXXXXXX_migrate is
/**
Created : 2012-4-16 14:12
description :
**/
--入口1:全量同步XXXXXXXXXXXXXX
procedure proc_sync_XXXXXXXXXXXXXX_full(
p_maxid in number
)
is
v_count number := 0;
v_errorcode varchar2(500);
v_errormsg varchar2(500);
begin
for cc in (select * from XXXXXXXXX where id<p_maxid order by id asc) loop
savepoint startloop;
begin
--保存信息
save_XXXXXXXXXXXXXX(XXXXXXX);
v_count := v_count + 1;
if mod(v_count,10)=0 then
commit;
end if;
exception
when others then
--先将这条记录的插入操作回滚掉,再记录日志
rollback to startloop;
--循环中出现异常,记录日志
v_errorcode := -abs(sqlcode);
v_errormsg := sqlerrm ;
save_exception_log_migrate();
end;
end loop;
commit ;
end;
--入口2:增量同步XXXXXXXXXXXXXX
procedure proc_sync_XXXXXXXXXXXXXX_incr
is
v_tag_group XXXXXXXXXXXXXXXX%ROWTYPE;
v_count number := 0;
v_errorcode varchar2(500);
v_errormsg varchar2(500);
v_count_group number := 0 ;
v_sales_id varchar2(64);
begin
for cc in (select * from XXXXXXXXXXXXXXXXXXX where object_type='XXXX') loop
savepoint startloop;
begin
if cc.action_type = 'i' then --新插入数据
save_XXXXXXXXXXXXXX(XXXXXXXXX);
end if;
elsif cc.action_type = 'u' then --更新数据
end if;
v_count := v_count + 1;
if mod(v_count,5)=0 then
commit;
end if;
exception
when others then
--先将这条记录的插入操作回滚掉,再记录日志
rollback to startloop;
--循环中出现异常,记录日志
v_errorcode := -abs(sqlcode);
v_errormsg := sqlerrm ;
save_exception_log_migrate();
end;
end loop;
commit;
end;
--保存到XXXXXXXXXXXXXX表
procedure save_XXXXXXXX(
p_tag_id varchar2,
p_gmt_create date ,
p_creator varchar2,
p_gmt_modified date ,
p_modifier varchar2,
p_is_deleted char ,
p_XXXX varchar2,
)
is
begin
insert into XXXXXXXXXXXXXXXXXXXX ;
end;
end;