当前位置:Gxlcms > mysql > Oracle中通过Function,存储过程,触发器,调用实现解析Clob字段

Oracle中通过Function,存储过程,触发器,调用实现解析Clob字段

时间:2021-07-01 10:21:17 帮助过:53人阅读

http://blog.csdn.net/sxdtzhaoxinguo/article/details/40052783 一:Function.SQL: CREATE OR REPLACE FUNCTION MIP.FormatDateValue (key VARCHAR2, value VARCHAR2) RETURN VARCHAR2IS --定义几个变量,出来解析过来的时间字符串 --日月年时分(11OCT14102

http://blog.csdn.net/sxdtzhaoxinguo/article/details/40052783


一:Function.SQL:

  1. CREATE OR REPLACE FUNCTION MIP.FormatDateValue (key VARCHAR2, value VARCHAR2)
  2. RETURN VARCHAR2
  3. IS
  4. --定义几个变量,出来解析过来的时间字符串
  5. --日月年时分(11OCT141024)
  6. AA VARCHAR2(32);
  7. DAY VARCHAR2(32);
  8. MOUNTH VARCHAR2(32);
  9. YEAR VARCHAR2(32);
  10. HOUR VARCHAR2(32);
  11. MINUTE VARCHAR2(32);
  12. ValueReturn VARCHAR2 (100);
  13. BEGIN
  14. IF key IS NULL THEN
  15. ValueReturn := NULL;
  16. RETURN ValueReturn;
  17. ELSE
  18. DAY := SUBSTR(key,0,2);
  19. MOUNTH := SUBSTR(key,3,3);
  20. IF INSTR (MOUNTH,'JAN') > 0 THEN
  21. MOUNTH := 01;
  22. END IF;
  23. IF INSTR (MOUNTH,'FEB') > 0 THEN
  24. MOUNTH := 02;
  25. END IF;
  26. IF INSTR (MOUNTH,'MAR') > 0 THEN
  27. MOUNTH := 03;
  28. END IF;
  29. IF INSTR (MOUNTH,'APR') > 0 THEN
  30. MOUNTH := 04;
  31. END IF;
  32. IF INSTR (MOUNTH,'MAY') > 0 THEN
  33. MOUNTH := 05;
  34. END IF;
  35. IF INSTR (MOUNTH,'JUN') > 0 THEN
  36. MOUNTH := 06;
  37. END IF;
  38. IF INSTR (MOUNTH,'JUL') > 0 THEN
  39. MOUNTH := 07;
  40. END IF;
  41. IF INSTR (MOUNTH,'AUG') > 0 THEN
  42. MOUNTH := 08;
  43. END IF;
  44. IF INSTR (MOUNTH,'SEP') > 0 THEN
  45. MOUNTH := 09;
  46. END IF;
  47. IF INSTR (MOUNTH,'OCT') > 0 THEN
  48. MOUNTH := 10;
  49. END IF;
  50. IF INSTR (MOUNTH,'NOV') > 0 THEN
  51. MOUNTH := 11;
  52. END IF;
  53. IF INSTR (MOUNTH,'DEC') > 0 THEN
  54. MOUNTH := 12;
  55. END IF;
  56. YEAR := SUBSTR(key,6,2);
  57. HOUR := SUBSTR(key,8,2);
  58. MINUTE := SUBSTR(key,-2);
  59. AA := 20;
  60. --日月年时分(11OCT141017)
  61. ValueReturn := AA || YEAR || '-' || MOUNTH || '-' || DAY || ' ' || HOUR || ':' || MINUTE;
  62. RETURN ValueReturn;
  63. END IF;
  64. END FormatDateValue;
  65. /

二:存储过程.SQL:
  1. CREATE OR REPLACE PROCEDURE MIP.MIP_PARSE (xmlStr IN CLOB)
  2. IS
  3. RENO VARCHAR2 (100);
  4. AIRLINE VARCHAR2 (100);
  5. FFID VARCHAR2 (100);
  6. FFID_A VARCHAR2 (100);
  7. FFID_D VARCHAR2 (100);
  8. ABNS VARCHAR2 (100);
  9. ACFT VARCHAR2 (100);
  10. CHDT VARCHAR2 (100);
  11. EIBT VARCHAR2 (100);
  12. FATA VARCHAR2 (100);
  13. FETA VARCHAR2 (100);
  14. --FFID VARCHAR2 (100);
  15. FSTA VARCHAR2 (100);
  16. LMDT VARCHAR2 (100);
  17. LMUR VARCHAR2 (100);
  18. PSTM VARCHAR2 (100);
  19. RWAY VARCHAR2 (100);
  20. SPOT VARCHAR2 (100);
  21. STND VARCHAR2 (100);
  22. A_TOBT VARCHAR2 (100);
  23. A_WEATHER VARCHAR2 (100);
  24. --ABNS VARCHAR2 (100);
  25. --ACFT VARCHAR2 (100);
  26. ASAT VARCHAR2 (100);
  27. BCTM VARCHAR2 (100);
  28. BOTM VARCHAR2 (100);
  29. BSTM VARCHAR2 (100);
  30. C_TOBT VARCHAR2 (100);
  31. COBT VARCHAR2 (100);
  32. CTOT VARCHAR2 (100);
  33. DINT VARCHAR2 (100);
  34. DLAB VARCHAR2 (100);
  35. DOUT VARCHAR2 (100);
  36. EDDI VARCHAR2 (100);
  37. EOBT VARCHAR2 (100);
  38. EPGT VARCHAR2 (100);
  39. EPOT VARCHAR2 (100);
  40. FATD VARCHAR2 (100);
  41. --FFID VARCHAR2 (100);
  42. FSTD VARCHAR2 (100);
  43. --LMDT VARCHAR2 (100);
  44. --LMUR VARCHAR2 (100);
  45. OFTM VARCHAR2 (100);
  46. --RENO VARCHAR2 (100);
  47. --RWAY VARCHAR2 (100);
  48. STDI VARCHAR2 (100);
  49. --STND VARCHAR2 (100);
  50. TSAT VARCHAR2 (100);
  51. --定义出港信息表要格式的时间字段
  52. A_TOBT_D VARCHAR2 (100);
  53. ASAT_D VARCHAR2 (100);
  54. BCTM_D VARCHAR2 (100);
  55. BOTM_D VARCHAR2 (100);
  56. BSTM_D VARCHAR2 (100);
  57. C_TOBT_D VARCHAR2 (100);
  58. COBT_D VARCHAR2 (100);
  59. CTOT_D VARCHAR2 (100);
  60. DINT_D VARCHAR2 (100);
  61. DOUT_D VARCHAR2 (100);
  62. EDDI_D VARCHAR2 (100);
  63. EOBT_D VARCHAR2 (100);
  64. EPGT_D VARCHAR2 (100);
  65. EPOT_D VARCHAR2 (100);
  66. FATD_D VARCHAR2 (100);
  67. FSTD_D VARCHAR2 (100);
  68. LMDT_D VARCHAR2 (100);
  69. OFTM_D VARCHAR2 (100);
  70. STDI_D VARCHAR2 (100);
  71. TSAT_D VARCHAR2 (100);
  72. --定义进港信息表要格式化的时间字段
  73. EIBT_A VARCHAR2 (100);
  74. FATA_A VARCHAR2 (100);
  75. FETA_A VARCHAR2 (100);
  76. FSTA_A VARCHAR2 (100);
  77. LMDT_A VARCHAR2 (100);
  78. PSTM_A VARCHAR2 (100);
  79. SPOT_A VARCHAR2 (100);
  80. BEGIN
  81. RENO := GetXmlNodeValue (xmlStr, 'RENO');
  82. AIRLINE := GetXmlNodeValue (xmlStr, 'AIRLINE');
  83. FFID := GetXmlNodeValue (xmlStr, 'FFID');
  84. ABNS := GetXmlNodeValue (xmlStr, 'ABNS');
  85. ACFT := GetXmlNodeValue (xmlStr, 'ACFT');
  86. CHDT := GetXmlNodeValue (xmlStr, 'CHDT');
  87. EIBT := GetXmlNodeValue (xmlStr, 'EIBT');
  88. FATA := GetXmlNodeValue (xmlStr, 'FATA');
  89. FETA := GetXmlNodeValue (xmlStr, 'FETA');
  90. FFID := GetXmlNodeValue (xmlStr, 'FFID');
  91. FSTA := GetXmlNodeValue (xmlStr, 'FSTA');
  92. LMDT := GetXmlNodeValue (xmlStr, 'LMDT');
  93. LMUR := GetXmlNodeValue (xmlStr, 'LMUR');
  94. PSTM := GetXmlNodeValue (xmlStr, 'PSTM');
  95. RWAY := GetXmlNodeValue (xmlStr, 'RWAY');
  96. SPOT := GetXmlNodeValue (xmlStr, 'SPOT');
  97. STND := GetXmlNodeValue (xmlStr, 'STND');
  98. A_TOBT := GetXmlNodeValue (xmlStr, 'A_TOBT');
  99. A_WEATHER := GetXmlNodeValue (xmlStr, 'A_WEATHER');
  100. --ABNS := GetXmlNodeValue (xmlStr, 'ABNS');
  101. --ACFT := GetXmlNodeValue (xmlStr, 'ACFT');
  102. ASAT := GetXmlNodeValue (xmlStr, 'ASAT');
  103. BCTM := GetXmlNodeValue (xmlStr, 'BCTM');
  104. BOTM := GetXmlNodeValue (xmlStr, 'BOTM');
  105. BSTM := GetXmlNodeValue (xmlStr, 'BSTM');
  106. C_TOBT := GetXmlNodeValue (xmlStr, 'C_TOBT');
  107. COBT := GetXmlNodeValue (xmlStr, 'COBT');
  108. CTOT := GetXmlNodeValue (xmlStr, 'CTOT');
  109. DINT := GetXmlNodeValue (xmlStr, 'DINT');
  110. DLAB := GetXmlNodeValue (xmlStr, 'DLAB');
  111. DOUT := GetXmlNodeValue (xmlStr, 'DOUT');
  112. EDDI := GetXmlNodeValue (xmlStr, 'EDDI');
  113. EOBT := GetXmlNodeValue (xmlStr, 'EOBT');
  114. EPGT := GetXmlNodeValue (xmlStr, 'EPGT');
  115. EPOT := GetXmlNodeValue (xmlStr, 'EPOT');
  116. FATD := GetXmlNodeValue (xmlStr, 'FATD');
  117. FSTD := GetXmlNodeValue (xmlStr, 'FSTD');
  118. --LMDT := GetXmlNodeValue (xmlStr, 'LMDT');
  119. --LMUR := GetXmlNodeValue (xmlStr, 'LMUR');
  120. OFTM := GetXmlNodeValue (xmlStr, 'OFTM');
  121. STDI := GetXmlNodeValue (xmlStr, 'STDI');
  122. TSAT := GetXmlNodeValue (xmlStr, 'TSAT');
  123. --出港信息表中时间字段的时间格式函数的用法
  124. A_TOBT_D := FORMATDATEVALUE (A_TOBT, 'A_TOBT_D');
  125. ASAT_D := FORMATDATEVALUE (ASAT, 'ASAT_D');
  126. BCTM_D := FORMATDATEVALUE (BCTM, 'BCTM_D');
  127. BOTM_D := FORMATDATEVALUE (BOTM, 'BOTM_D');
  128. BSTM_D := FORMATDATEVALUE (BSTM, 'BSTM_D');
  129. C_TOBT_D := FORMATDATEVALUE (C_TOBT, 'C_TOBT_D');
  130. COBT_D := FORMATDATEVALUE (COBT, 'COBT_D');
  131. CTOT_D := FORMATDATEVALUE (CTOT, 'CTOT_D');
  132. DINT_D := FORMATDATEVALUE (DINT, 'DINT_D');
  133. DOUT_D := FORMATDATEVALUE (DOUT, 'DOUT_D');
  134. EDDI_D := FORMATDATEVALUE (EDDI, 'EDDI_D');
  135. EOBT_D := FORMATDATEVALUE (EOBT, 'EOBT_D');
  136. EPGT_D := FORMATDATEVALUE (EPGT, 'EPGT_D');
  137. EPOT_D := FORMATDATEVALUE (EPOT, 'EPOT_D');
  138. FATD_D := FORMATDATEVALUE (FATD, 'FATD_D');
  139. FSTD_D := FORMATDATEVALUE (FSTD, 'FSTD_D');
  140. LMDT_D := FORMATDATEVALUE (LMDT, 'LMDT_D');
  141. OFTM_D := FORMATDATEVALUE (OFTM, 'OFTM_D');
  142. STDI_D := FORMATDATEVALUE (STDI, 'STDI_D');
  143. TSAT_D := FORMATDATEVALUE (TSAT, 'TSAT_D');
  144. --进港信息表中时间字段的时间格式函数的用法
  145. EIBT_A := FORMATDATEVALUE (EIBT, 'EIBT_A');
  146. FATA_A := FORMATDATEVALUE (FATA, 'FATA_A');
  147. FETA_A := FORMATDATEVALUE (FETA, 'FETA_A');
  148. FSTA_A := FORMATDATEVALUE (FSTA, 'FSTA_A');
  149. LMDT_A := FORMATDATEVALUE (LMDT, 'LMDT_A');
  150. PSTM_A := FORMATDATEVALUE (PSTM, 'PSTM_A');
  151. SPOT_A := FORMATDATEVALUE (SPOT, 'SPOT_A');
  152. IF INSTR(FFID,'-D-') > 0 THEN
  153. --FFID_D := FFID;
  154. --截取航班号
  155. FFID_D := SUBSTR(FFID,INSTR(FFID,'-',1)+1,INSTR(FFID,'-',INSTR(FFID,'-',1)+1)-INSTR(FFID,'-',1)-1);
  156. INSERT INTO TB_CMS_FLGTINFO_D (ID,A_TOBT,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT,BCTM,BOTM,BSTM,C_TOBT,COBT,CTOT,DINT,DLAB,DOUT,EDDI,EOBT,EPGT,EPOT,FATD,FFID,FSTD,LMDT,LMUR,OFTM,RENO,RWAY,STDI,STND,TSAT)
  157. VALUES (FLGTINFO_D_SEQ.NEXTVAL,
  158. A_TOBT_D,
  159. A_WEATHER,
  160. ABNS,
  161. ACFT,
  162. AIRLINE,
  163. ASAT_D,
  164. BCTM_D,
  165. BOTM_D,
  166. BSTM_D,
  167. C_TOBT_D,
  168. COBT_D,
  169. CTOT_D,
  170. DINT_D,
  171. DLAB,
  172. DOUT_D,
  173. EDDI_D,
  174. EOBT_D,
  175. EPGT_D,
  176. EPOT_D,
  177. FATD_D,
  178. FFID_D,
  179. FSTD_D,
  180. LMDT_D,
  181. LMUR,
  182. OFTM_D,
  183. RENO,
  184. RWAY,
  185. STDI_D,
  186. STND,
  187. TSAT_D);
  188. ELSE
  189. --FFID_A := FFID;
  190. FFID_A := SUBSTR(FFID,INSTR(FFID,'-',1)+1,INSTR(FFID,'-',INSTR(FFID,'-',1)+1)-INSTR(FFID,'-',1)-1);
  191. INSERT INTO TB_CMS_FLGTINFO_A (ID,ABNS,ACFT,AIRLINE,CHDT,FFID,RENO,EIBT,FATA,FETA,FSTA,LMDT,LMUR,PSTM,RWAY,SPOT,STND)
  192. VALUES (FLGTINFO_A_SEQ.NEXTVAL,
  193. ABNS,
  194. ACFT,
  195. AIRLINE,
  196. CHDT,
  197. FFID_A,
  198. RENO,
  199. EIBT_A,
  200. FATA_A,
  201. FETA_A,
  202. FSTA_A,
  203. LMDT_A,
  204. LMUR,
  205. PSTM_A,
  206. RWAY,
  207. SPOT_A,
  208. STND);
  209. END IF;
  210. COMMIT;
  211. EXCEPTION
  212. WHEN OTHERS
  213. THEN
  214. DBMS_OUTPUT.PUT_LINE (SQLERRM);
  215. END MIP_PARSE;
  216. /

三:以上就是改进后的sql语句;


四:详情请看:http://blog.csdn.net/sxdtzhaoxinguo/article/details/40052783

人气教程排行