zoukankan      html  css  js  c++  java
  • Oracle 拆分字符串函数

         在将图形系统的数据保存的DCOM方式转化为数据库底层直接操作的过程中,需要保留以前的批量的插入和删除功能,这其中就会涉及到将传入的字符串进行拆分然后利用ORA 的存储过程进行批量处理。在此记录下字符串拆分函数:

       1:  create or replace function split_str(var_str   in varchar2, 
       2:                                         var_split in varchar2) 
       3:  /**************************************************** 
       4:    注意 先执行下面语句 创建类型 
       5:    create or replace type t_ret_table is table of varchar2(100)
       6:   
       7:    ** 函数名称:split_str
       8:   
       9:    ** 参    数:【名称】         【类型 】      【说明】 
      10:    **           var_str          varchar2       要拆分的字符串 
      11:    **           var_split        varchar2       字符串分隔符 
      12:    ** 返 回 值:   t_ret_table       CURSOR  拆分后数据集合 
      13:    ** 摘    要:拆分字符串
      14:   
      15:    调用 举例: 
      16:    select * from table(split_str('A-B-C','-')) 
      17:    ****************************************************/
      18:   
      19:    return t_ret_table is
      20:   
      21:    var_out     t_ret_table; 
      22:    var_tmp     varchar2(4000); 
      23:    var_element varchar2(4000);
      24:   
      25:  begin 
      26:    var_tmp := var_str; 
      27:    var_out := t_ret_table(); 
      28:    --如果存在匹配的分割符 
      29:    while instr(var_tmp, var_split) > 0 loop 
      30:      var_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1); 
      31:      var_tmp     := substr(var_tmp, 
      32:                            instr(var_tmp, var_split) + length(var_split), 
      33:                            length(var_tmp)); 
      34:      --var_out.extend(1); 
      35:      var_out.extend;
      36:   
      37:      --重新设置var_element值 
      38:      var_element:=substr(var_element,instr(var_element,'>',1)+1); 
      39:      var_out(var_out.count) := var_element;
      40:   
      41:      --打印 
      42:      --SET SERVEROUT ON; 
      43:      DBMS_OUTPUT.PUT_LINE(var_element); 
      44:      --打印
      45:   
      46:    end loop;
      47:   
      48:    --var_out.extend(1); 
      49:    var_out.extend; 
      50:    var_out(var_out.count) := var_tmp;
      51:   
      52:    return var_out; 
      53:  end split_str;
    成功不是得到多少东西,而是把身上多余的东西的扔掉多少。
  • 相关阅读:
    Linux Shell中的延时函数
    调试core文件(转)
    C++类构造函数初始化列表(转)
    seq简介(转)
    查看内存使用情况(转)
    awk 数组实例(转)
    伪终端(转)
    C++类成员变量的初始化方法(转)
    几个shell命令(转)
    子进程自父进程继承什么或未继承什么(转)
  • 原文地址:https://www.cnblogs.com/Ferdinand/p/2732152.html
Copyright © 2011-2022 走看看