程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle創建Split 與Map 函數的代碼示例

Oracle創建Split 與Map 函數的代碼示例

編輯:Oracle數據庫基礎

如果你對Oracle創建Split 和Map 函數感到很是很郁悶時。你就可以浏覽下面的文章了,我在一個信譽度很好的網站找到一個關於Oracle創建Split 和Map 函數的相關代碼的介紹,以下文章主要是對其代碼的介紹。供大家分享。

在Oracle創建Split 和Map 函數

  1. create or replace TYPE T_VARCHAR2_LIST AS TABLE OF VARCHAR2(200);  
  2. /  
  3. create or replace  
  4. FUNCTION F_SPLIT_STRING(  
  5. p_source VARCHAR2, p_delimiter VARCHAR2  
  6. ) RETURN T_VARCHAR2_LIST  
  7. AS  
  8. v_layer_rate_list T_VARCHAR2_LIST :T_VARCHAR2_LIST();  
  9. var_tmp VARCHAR2(4000);  
  10. var_element VARCHAR2(4000);  
  11. BEGIN  
  12. var_tmp :p_source;  
  13. WHILE instr(var_tmp, p_delimiter)>0 LOOP  
  14. var_element :substr(var_tmp, 1, instr(var_tmp, p_delimiter)-1);  
  15. var_tmp :substr(var_tmp,instr(var_tmp, p_delimiter) + 
    length(p_delimiter),length(var_tmp));  
  16. IF (var_element IS NOT NULL) AND (var_element != p_delimiter) THEN  
  17. v_layer_rate_list.extend(1);  
  18. v_layer_rate_list(v_layer_rate_list.count) :var_element;  
  19. END IF;  
  20. END LOOP;  
  21. IF (var_tmp IS NOT NULL) AND (var_tmp != p_delimiter) THEN  
  22. v_layer_rate_list.extend(1);  
  23. v_layer_rate_list(v_layer_rate_list.count) :var_tmp;  
  24. END IF;  
  25. RETURN v_layer_rate_list;  
  26. END F_SPLIT_STRING;  
  27. /  
  28. create or replace  
  29. TYPE T_STRING_MAP AS TABLE OF T_STRING_ENTRY;  
  30. /  
  31. create or replace  
  32. TYPE T_STRING_ENTRY AS OBJECT (  
  33. c_key VARCHAR2(200), c_value VARCHAR2(200)  
  34. );  
  35. /  
  36. create or replace  
  37. FUNCTION f_PARSE_STRING_TO_MAP(  
  38. p_oringal_string VARCHAR2, p_entry_delimiter VARCHAR2,
     p_key_delimeter VARCHAR2  
  39. ) RETURN T_STRING_MAP  
  40. AS  
  41. v_entry_list T_VARCHAR2_LIST;  
  42. v_string_map T_STRING_MAP :T_STRING_MAP();  
  43. v_string_entry T_STRING_ENTRY :T_STRING_ENTRY(NULL,NULL);  
  44. v_int NUMBER(4);  
  45. BEGIN  
  46. v_entry_list :F_SPLIT_STRING(p_oringal_string, p_entry_delimiter);  
  47. FOR l_entry IN v_entry_list.first..v_entry_list.last  
  48. LOOP  
  49. v_int :instr(v_entry_list(l_entry), p_key_delimeter);  
  50. v_string_entry.c_key :substr(v_entry_list(l_entry), 0, v_int-1);  
  51. v_string_entry.c_value :substr(v_entry_list(l_entry), 
    v_int+length(p_key_delimeter));  
  52. v_string_map.extend;  
  53. v_string_map(v_string_map.count) :v_string_entry;  
  54. END LOOP;  
  55. RETURN v_string_map;  
  56. END f_PARSE_STRING_TO_MAP;  
  57. /  

上述的相關內容就是對Oracle創建Split 和Map 函數的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved