存储过程示例

简介:
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 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/193878,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
SQL Oracle 关系型数据库
SQL 中的运算符与别名:使用示例和语法详解
IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写
212 0
|
10月前
|
SQL 存储 安全
如何使用SQL语句创建触发器
如何使用SQL语句创建触发器
155 0
|
存储 SQL 安全
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
|
存储
存储过程的语法讲解
在上一篇文章:别再说不知道什么是存储过程和存储函数了中简单的介绍了存储过程和存储函数以及其使用。其实存储过程是可以进行编程的,所以可以和其他的编程语言一样使用变量、表达式以及控制结构进行编程,从而实现一些复杂和有用的功能。
181 0
存储过程的语法讲解