Oracle Procedure模板

前端之家收集整理的这篇文章主要介绍了Oracle Procedure模板前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
CREATE OR REPLACE PROCEDURE 存储过程名(hash_num in number,hash_value in number,-- hash值
                                      batch_num in NUMBER DEFAULT 5000,-- 一批处理数
                                      commitnum IN NUMBER DEFAULT 500,-- 一次提交数
                                      beginhour IN NUMBER DEFAULT 0,-- 开始时间
                                      endhour IN NUMBER DEFAULT 17 -- 结束时间
                                      ) AS 
  /*
  CREATE DATE:时间 
  CREATE BY:工号
  DESC : 存储过程功能描述
  */
-- 提取数据
CURSOR cursor_name IS SELECT t.*,ROWID FROM tt_telhis_src t WHERE nvl(t.deal_flg,0) = 0
AND dbms_utility.get_hash_value(t.fulltel,hash_num) = hash_value AND rownum <= batch_num;
-- 游标结构声明
v_cursor cursor_name % ROWTYPE;
-- 记录处理条数
procnum NUMBER DEFAULT 0;
BEGIN
  -- 不在时间段内,job空跑
  IF NOT (SYSDATE BETWEEN trunc(SYSDATE)+beginhour/24 AND trunc(SYSDATE) + endhour/24) THEN
    RETURN;
  END IF;
  FOR X IN v_cursor LOOP
    -- 业务逻辑
    
    -- 批次提交
    procnum := procnum + 1;
    IF MOD(procnum,commitnum) = 0 THEN
      COMMIT;
    END IF;
  END LOOP;
  COMMIT;
  -- 异常处理
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
    -- 记录异常日志
    PKG_SYS_LOG.ERROR_LOG(NULL,‘存储过程名‘,SYSDATE,sqlCODE,sqlERRM,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,NULL);
END 存储过程名;
/

猜你在找的Oracle相关文章