您的位置:首页 > 其它

存储过程示例

2009-08-20 11:08 155 查看
create or replace PROCEDURE CMPP_SUBMIT_REMOVE_PROCEDURE
Is
dEndTime date; -- 每次处理是时间点
-- 取得要处理的数据ID
cursor c_cmpp_submit(endTime date) is
select id from cmpp_submit
where ((ih_process <> 'insert_cmpp_submit' and ih_process <> 'wait_for_response')
or (ih_process = 'wait_for_response' and ih_retry <= 0))
and ih_timestamp < endTime and rownum<100001 ;
iId number; -- id
iCount number; -- 计数器
begin
--dEndTime := trunc((SYSDATE - 1/288),'mi'); -- 取得处理时间点,处理5分钟前的数据
dEndTime := trunc(SYSDATE,'mi'); -- 取得处理时间点
iCount := 0; -- 初始化计数
open c_cmpp_submit(dEndTime);
loop
fetch c_cmpp_submit into iId;
exit when c_cmpp_submit%notfound;
iCount := iCount+1;
insert into cmpp_submit_backup select * from cmpp_submit where id=iId;
delete from cmpp_submit where id=iId;
if ( iCount=1000 ) then -- 每1000条提交一次
begin
commit;
end;
end if;
end loop; -- end of loop
close c_cmpp_submit;
commit;
return;
EXCEPTION
WHEN OTHERS THEN
BEGIN
rollback;
if c_cmpp_submit%isopen then
close c_cmpp_submit;
end if;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
end CMPP_SUBMIT_REMOVE_PROCEDURE;本文出自 “云计算与大数据_jxwpx” 博客,请务必保留此出处http://jxwpx.blog.51cto.com/15242/193878
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: