当前位置: 代码迷 >> Oracle开发 >> 求分割字符串兼安插数据库的 oracle储存过程
  详细解决方案

求分割字符串兼安插数据库的 oracle储存过程

热度:70   发布时间:2016-04-24 06:37:41.0
求分割字符串兼插入数据库的 oracle储存过程。
create or replace procedure DP_TEST(h_key in VARCHAR2,h_value in VARCHAR2 )

如上面所示:我要建立一个插入数据库的储存过程,这个储存过程传入两个参数,一个h_key,一个h_value.  其中h_key的值形式 A;B;C;D;E;F........ 对应的h_value 的值形式 1;2;3;4;5;6.......
现在的需求是我要怎么把h_key和h_value按照分号分割开?把分割开之后每一个key 对应的value 插入数据库(A 对应1,B 对应2)。
还有就是我要怎么得到分割之后的长度啊!比如说用数组来分割,那么我怎么得到数组长度。
------解决方案--------------------
未测试,试一下
create or replace procedure DP_TEST(h_key in VARCHAR2,h_value in VARCHAR2 ) is
  v_key VARCHAR2(100);
  v_value VARCHAR2(100);
  v_splitkey varchar2(10):=';'; 
begin
  loop
    exit when h_key is null or h_value is null;
    if instr(h_key,v_splitkey)>0 then
      v_key:=substr(h_key,1,instr(h_key,v_splitkey)-1);
      h_key:=substr(h_key,instr(h_key,v_splitkey)+1);
    else
      v_key:=h_key;
      h_key:=null;
   end if;
   if if instr(h_value,v_splitkey)>0 then
      v_value:=substr(h_value,1,instr(h_value,v_splitkey)-1);
      h_value:=substr(h_value,instr(h_value,v_splitkey)+1);
    else
      v_value:=h_value;
      h_value:=null;
    end if;
    insert into t(key,value)values(v_key,v_value);
  end loop;
  commit;
end;
  相关解决方案