保存一个package的存储过程的实例

保存一个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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值