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,0,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 存储过程名; /