pl/sqlプログラミングJavaにおけるStringに類似したsplit関数機能を実現

1651 ワード

pl/sqlプログラミングJavaにおけるStringに類似したsplit関数機能を実現
      ただ、JavaのStringのsplit関数の機能は強くなく、文字列を指定した区切り記号で切り取り、配列を返す簡単なアプリケーションを満たすだけです.
コードは次のとおりです.
--  T_CHAR  
create type ty_str_split as table of varchar2(100);
	  /**
       *    :str_split
       *     :p_str        (     :              )
       *         p_delim      
       *    : T_CHAR  ,      
       *   :     JS split    
       */
      function str_split  (p_str in varchar2
                                     ,p_delim in varchar2 default ',') 
        return T_CHAR as
        v_str      varchar2(32767);
        v_fields   pls_integer;
        v_substr   varchar2(32767);
        v_return   T_CHAR;
      begin
        v_str := p_delim||trim(p_delim from p_str)||p_delim;
        v_fields := length(v_str) - length(replace(v_str,p_delim,'')) - 1;

        for i in 1..v_fields loop
          v_substr := substr(v_str
                            ,instr(v_str,p_delim,1,i)+1
                            ,instr(v_str,p_delim,1,i+1) - instr(v_str,p_delim,1,i) -1);
          v_return(i) := v_substr;
        end loop;
        return v_return;
      end;

 
create or replace procedure test1 as
    v_array T_CHAR;
begin
    v_array:=str_split('1a,2b,3c,4d',',');
    for i in 1..v_array.count loop
         dbms_output.put_line('v_array('||i||')='||v_array(i));
    end loop;
end test1;