Guest User

Untitled

a guest
Jan 18th, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. DECLARE
  2. CURSOR ord_prog
  3. IS
  4. Select column_list from <target_table>@dblink;
  5.  
  6. TYPE order_tab IS TABLE OF ord_prog%ROWTYPE;
  7.  
  8. o_data order_tab;
  9. -- Local Variabl declartion
  10. l_array_size NUMBER := 1000;
  11. l_error_count NUMBER := 0;
  12. ex_dml_errors EXCEPTION;
  13. PRAGMA EXCEPTION_INIT (ex_dml_errors, -24381);
  14. ls_id_prgm t_err_log_pm.telp_prg_id%TYPE := 'I2PMB059';
  15. ls_err_msg VARCHAR2 (1000);
  16. ls_param t_err_log_pm.telp_remarks%TYPE;
  17. ln_test INTEGER := 0;
  18.  
  19. -- Error Handling procedure
  20. PROCEDURE i2pmb666 (
  21. ld_date DATE DEFAULT SYSDATE,
  22. ls_err_msg VARCHAR2,
  23. ls_id_prgm VARCHAR2,
  24. ls_param VARCHAR2,
  25. ls_err_date DATE DEFAULT SYSDATE,
  26. ls_user_id VARCHAR2 DEFAULT NULL
  27. )
  28. IS
  29. PRAGMA AUTONOMOUS_TRANSACTION;
  30. BEGIN
  31. INSERT INTO t_err_log_pm
  32. (telp_date, telp_prg_id, telp_error_code_msg,
  33. telp_remarks, telp_user_id
  34. )
  35. VALUES (ld_date, ls_id_prgm, ls_err_msg,
  36. ls_param, ls_user_id
  37. );
  38.  
  39. COMMIT;
  40. EXCEPTION
  41. WHEN OTHERS
  42. THEN
  43. ROLLBACK;
  44. DBMS_OUTPUT.put_line ( SQLERRM
  45. || 'error in inserting into the log table '
  46. );
  47. END;
  48.  
  49. BEGIN
  50. -- Delete of T_UD_HR_ORDER_PROG is handled before
  51. OPEN ord_prog;
  52.  
  53. LOOP
  54. FETCH ord_prog
  55. BULK COLLECT INTO o_data LIMIT l_array_size;
  56.  
  57. -- Start Bulk Insert of Order progress data and log errors in case any
  58. BEGIN
  59. FORALL i IN 1 .. o_data.COUNT SAVE EXCEPTIONS
  60. INSERT INTO <target_table>
  61. VALUES o_data (i);
  62. COMMIT;
  63. EXIT WHEN ord_prog%NOTFOUND;
  64. ln_test := ln_test + l_array_size;
  65. DBMS_OUTPUT.put_line (ln_test);
  66. EXCEPTION
  67. WHEN ex_dml_errors
  68. THEN
  69. ROLLBACK;
  70. l_error_count := SQL%BULK_EXCEPTIONS.COUNT;
  71.  
  72. FOR i IN 1 .. l_error_count
  73. LOOP
  74. ls_err_msg :=
  75. 'Step-3::INS_ORD_PROG::'
  76. || '::'
  77. || SQLERRM (-SQL%BULK_EXCEPTIONS (i).ERROR_CODE);
  78. ls_param :=
  79. o_data (SQL%BULK_EXCEPTIONS (i).ERROR_INDEX).tho_id_order
  80. || '-'
  81. || o_data (SQL%BULK_EXCEPTIONS (i).ERROR_INDEX).tho_id_order_item
  82. || '-'
  83. || o_data (SQL%BULK_EXCEPTIONS (i).ERROR_INDEX).tho_id_part_order;
  84. i2pmb666 (SYSDATE, ls_err_msg, ls_id_prgm, ls_param, SYSDATE);
  85. END LOOP;
  86. WHEN OTHERS
  87. THEN
  88. ROLLBACK;
  89. ls_err_msg :=
  90. 'Step-4::INS_ORD_PROG::' || '::' || SQLERRM || '::' || SQLCODE;
  91. ls_param := '-';
  92. i2pmb666 (SYSDATE, ls_err_msg, ls_id_prgm, ls_param, SYSDATE);
  93. END;
  94. END LOOP;
  95.  
  96. CLOSE ord_prog;
  97. EXCEPTION
  98. WHEN OTHERS
  99. THEN
  100. ls_err_msg :=
  101. 'Step-6::PRGM_LEVEL_ERROR::' || '::' || SQLERRM || '::' || SQLCODE;
  102. ls_param := '-';
  103. i2pmb666 (SYSDATE, ls_err_msg, ls_id_prgm, ls_param, SYSDATE);
  104. END;
Add Comment
Please, Sign In to add comment