• Oracle 存储过程游标遍历查询信息,并打印输出异常信息


    1. --市案件审批--for 修复一单多派执行异常的情况,使用游标遍历执行
    2. PROCEDURE PROC_CASEAPPLY(P_CASENUM VARCHAR2,
    3. P_APPLYTYPE NUMBER,
    4. P_ISAPPROVE NUMBER,
    5. P_DAYS NUMBER,
    6. P_REPCONTENT VARCHAR2,
    7. P_RETURNVALUE OUT NUMBER) IS
    8. V_CASEID NUMBER;
    9. V_RECUSERID NUMBER;
    10. V_TACHEID NUMBER;
    11. V_ROLETYPE NUMBER;
    12. BEGIN
    13. --获取需更新的案件信息,因存在一单多派的情况,所以需遍历查询到的案件
    14. declare--定义游标
    15. cursor case_cursor is select 案件记录号 from 投诉业务表 where 市案件公文号 = P_CASENUM and 环节号 in (95, 96);
    16. begin
    17. for curcase in case_cursor loop--遍历游标
    18. V_CASEID := curcase.案件记录号;
    19. /*SELECT 案件记录号
    20. INTO V_CASEID
    21. FROM 投诉业务表
    22. WHERE 市案件公文号 = P_CASENUM
    23. AND 环节号 IN (95, 96);*/
    24. SELECT 申请部门人员
    25. INTO V_RECUSERID
    26. FROM 案件申请表
    27. WHERE 案件记录号 = V_CASEID
    28. AND 是否最新 = 1
    29. AND 申请类型 = P_APPLYTYPE;
    30. SELECT ROLETYPE
    31. INTO V_ROLETYPE
    32. FROM TABBASEPERSON
    33. WHERE CHVID = V_RECUSERID;
    34. --退回
    35. IF P_APPLYTYPE = 1 THEN
    36. IF P_ISAPPROVE = 0 THEN
    37. --驳回
    38. UPDATE 案件申请表
    39. SET 是否驳回 = 1, 答复时间 = SYSDATE, 答复内容 = P_REPCONTENT
    40. WHERE 案件记录号 = V_CASEID
    41. AND 申请类型 = 1
    42. AND 是否最新 = 1;
    43. UPDATE 投诉业务表 SET 环节号 = 98 WHERE 案件记录号 = V_CASEID;
    44. V_TACHEID := 98;
    45. ELSE
    46. --批准
    47. /*世道要变了,不能删除市级批准退回的案件。 yy 2015年3月19日10:29:08
    48. DELETE FROM 投诉业务表 WHERE 案件记录号 = V_CASEID;
    49. DELETE FROM TABDOCSTEP WHERE CASEID = V_CASEID;
    50. DELETE FROM 案件申请表 WHERE 案件记录号 = V_CASEID;
    51. */
    52. /*103:市批准退回*/
    53. UPDATE 投诉业务表 T
    54. SET T.环节号 = 103
    55. WHERE T.市案件公文号 = P_CASENUM; --T.案件记录号 = V_CASEID;
    56. V_TACHEID := 103;
    57. UPDATE 案件申请表
    58. SET 是否批准 = 1, 答复时间 = SYSDATE, 答复内容 = P_REPCONTENT
    59. WHERE 案件记录号 = V_CASEID
    60. AND 申请类型 = 1
    61. AND 是否最新 = 1;
    62. --转移结案表
    63. PKG_TACHERUN.PRO_TRANSFORM(V_CASEID,
    64. '投诉业务表',
    65. '案件记录号',
    66. '案件公文号,实际完成时间,规定完成时间,派单员,环节号,主办部门人员,主办部门,主办发送标志,主办签收标志');
    67. END IF;
    68. ELSE
    69. --延期
    70. IF P_ISAPPROVE = 0 THEN
    71. --驳回
    72. UPDATE 案件申请表
    73. SET 是否驳回 = 1, 答复时间 = SYSDATE, 答复内容 = P_REPCONTENT
    74. WHERE 案件记录号 = V_CASEID
    75. AND 申请类型 = 2
    76. AND 答复时间 IS NULL;
    77. --AND 是否最新 = 1;
    78. IF V_ROLETYPE = 29 THEN
    79. UPDATE 投诉业务表 SET 环节号 = 117 WHERE 案件记录号 = V_CASEID;
    80. V_TACHEID := 117;
    81. ELSIF V_ROLETYPE = 28 THEN
    82. UPDATE 投诉业务表 SET 环节号 = 18 WHERE 案件记录号 = V_CASEID;
    83. V_TACHEID := 18;
    84. END IF;
    85. ELSE
    86. UPDATE 案件申请表
    87. SET 答复时间 = SYSDATE, 答复内容 = P_REPCONTENT, 是否批准 = 1
    88. WHERE 案件记录号 = V_CASEID
    89. AND 申请类型 = 2
    90. --AND 是否最新 = 1;
    91. AND 答复时间 IS NULL;
    92. IF V_ROLETYPE = 28 THEN
    93. UPDATE 投诉业务表 SET 环节号 = 17 WHERE 案件记录号 = V_CASEID;
    94. V_TACHEID := 17;
    95. ELSIF V_ROLETYPE = 29 THEN
    96. UPDATE 投诉业务表 SET 环节号 = 116 WHERE 案件记录号 = V_CASEID;
    97. V_TACHEID := 116;
    98. END IF;
    99. UPDATE 投诉业务表
    100. SET 办理时间 = 办理时间 + P_DAYS * 1440,
    101. 规定完成时间 = 规定完成时间 + P_DAYS,
    102. 市办理时限 = 市办理时限 + P_DAYS * 1440,
    103. 市规定完成时间 = 市规定完成时间 + P_DAYS
    104. WHERE 市案件公文号 = P_CASENUM;
    105. END IF;
    106. END IF;
    107. --更新环节表数据
    108. UPDATE TABDOCSTEP
    109. SET STATE = 3, ISNEWEST = 0, SENDDATE = SYSDATE
    110. WHERE ISNEWEST = 1
    111. AND RECID = PKG_CONSTANT.USERIDCITY
    112. AND CASEID = V_CASEID;
    113. --添加环节表数据
    114. INSERT INTO TABDOCSTEP
    115. (STEPID, CASEID, SENDID, RECID, TACHEID)
    116. VALUES
    117. (SEQ_TABDOCSTEP.NEXTVAL,
    118. V_CASEID,
    119. PKG_CONSTANT.USERIDCITY,
    120. V_RECUSERID,
    121. V_TACHEID);
    122. end loop;
    123. end;
    124. P_RETURNVALUE := 1;
    125. COMMIT;
    126. EXCEPTION
    127. WHEN OTHERS THEN
    128. DBMS_OUTPUT.PUT_LINE(SQLCODE);
    129. DBMS_OUTPUT.PUT_LINE(SQLERRM);
    130. P_RETURNVALUE := 0;
    131. ROLLBACK;
    132. END;

  • 相关阅读:
    kafka初体验
    一般乘法器设计,verilog code
    为什么 BI 软件都搞不定关联分析
    大数据技术发展史
    基于SSM和Boostrap实现的电影评论网站设计
    Element UI 表单验证规则动态失效问题
    SpringBoot【运维实用篇】
    408数据结构历年代码真题详解(含暴力解)
    Appium框架
    深入理解JVM----垃圾回收算法
  • 原文地址:https://blog.csdn.net/wlpz0528/article/details/127997770