Oracle创建Split 与Map 函数的代码示例

如果你对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. /  
http://database.51cto.com/art/201004/193775.htm

上述的相关内容就是对Oracle创建Split 和Map 函数的描述,希望会给你带来一些帮助在此方面

猜你喜欢

转载自alwarse.iteye.com/blog/1729667