create or replace PROCEDURE P_TB_TASK_LOG IS --功能:插入任务到任务日志表 V_TASK_START_DATE DATE; V_TASK_END_DATE DATE; V_SQL_CODE NUMBER; V_SQL_MSG VARCHAR2(4000) := ''; --SQL错误信息 V_TASK_INFO TS25.TB_TASK_INFO%ROWTYPE; V_COUNT NUMBER; cursor CUR_TASK_INFO is select * FROM TS25.TB_TASK_INFO a; begin --该存储过程执行开始时间和结束时间 SELECT SYSDATE INTO v_task_start_date FROM dual; SELECT SYSDATE INTO v_task_end_date FROM dual; v_sql_msg := 'step 1: 抽取数据到目的表TB_INS_INFO'; open CUR_TASK_INFO; V_COUNT := 0; loop fetch CUR_TASK_INFO into V_TASK_INFO; exit when CUR_TASK_INFO %NOTFOUND; INSERT INTO TB_TASK_LOG( c_id, --任务日志主键 c_task_number, --任务号 c_fk_task_id, --任务id c_crt_id, --任务所有者 c_ori_user_id, --原所有者 c_curr_user_id, --现所有者 c_ori_task_stat, --原任务状态 c_curr_task_stat, --当前任务状态 c_sori_task_stat, --原任务销售状态 c_scurr_task_stat, --现在任务销售状态 c_del, --删除标志 c_act_type, -- n_change_amount, c_change_reason, c_task_type, c_call_type, t_cre_date, c_purl_level, c_ori_task_level, --原任务状态 c_curr_task_level, --现任务级别 c_note --备注 ) values( sys_guid(), --任务日志主键 V_TASK_INFO.C_TTI_ID, --任务号 V_TASK_INFO.N_TTI_ID, --任务id V_TASK_INFO.C_CRT_CDE, --创建人 '', --原所有者ID V_TASK_INFO.C_NME, --现所有者ID '', --原任务状态 V_TASK_INFO.C_STAT, --现任务状态 '', --任务原销售状态 '', --任务现销售状态 '0', --删除状态 '', -C_ACT_TYPE 1.派发 2. 改派 3.回收 4.执行 '0', -- 变更数量 '', --1.错号 2-空号 3-拒防 4-无意向 5-已投保 6-无人接听 7-占线 , --1-电销 2 网销 0 - 其它 V_TASK_INFO.C_TSK_TYPE, --1-呼入 2 -呼出 V_TASK_INFO.T_CRT_DATE, --创建日期 '', --投保意象度 '', --原任务级别 '', --现任务级别 '' --备注 ); if (V_COUNT = 1000) then commit; V_COUNT := 0; else V_COUNT := V_COUNT + 1; endif; end loop; close CUR_TASK_INFO; commit; SELECT SYSDATE INTO v_task_end_date FROM dual; INSERT INTO LOAD_HIS_LOG (SYS, JOBNAME, START_DATE, END_DATE, RUN_DATE, SQL_CODE, SQL_STATE) VALUES ('TS25', 'P_TB_TASK_LOG', v_task_start_date, v_task_end_date, to_char((v_task_end_date - v_task_start_date) * 86400), v_sql_code, v_sql_msg); COMMIT; EXCEPTION WHEN OTHERS THEN v_sql_code := SQLCODE; v_sql_msg := v_sql_msg || ' ' /*|| dbms_utility.format_error_backtrace*/ || ' : ' || SQLERRM; --任务结束时间 SELECT SYSDATE INTO v_task_end_date FROM dual; ROLLBACK; INSERT INTO LOAD_HIS_LOG (SYS, JOBNAME, START_DATE, END_DATE, RUN_DATE, SQL_CODE, SQL_STATE) VALUES ('TS25', 'P_TB_INS_INFO', v_task_start_date, v_task_end_date, to_char((v_task_end_date - v_task_start_date) * 86400), v_sql_code, v_sql_msg); COMMIT; end P_TB_TASK_LOG; |
oracle存储过程,游标
最新推荐文章于 2025-01-23 11:46:15 发布
oracle存储过程,游标
2010-07-07 13:01