--用于分割的函数,参数(分割的字符串,依据分割的字符) function f_pos(as_str1 in varchar2,as_str2 in Varchar2) return number is i number; begin for i in 1..length(as_str1) loop if substr(as_str1,i,length(as_str2))= as_str2 then return i; end if ; end loop; return 0; end f_pos;
存储过程 procedure p_insert_tab(as_lshstr1 in varchar2,as_lshstr2 varchar2) is li_pos1 integer; li_pos2 integer;ls_lsh1 varchar2(100); ls_lsh2 varchar2(100); ls_lshstr1 varchar2(1000); ls_lshstr2 varchar2(1000); beginls_lshstr1:=as_lshstr1; ls_lshstr2:=as_lshstr2; loop li_pos1:=f_pos(ls_lshstr1,','); if li_pos1 >0 then ls_lsh1:=substr(ls_lshstr1,1,li_pos1-1); ls_lshstr1:=substr(ls_lshstr1,li_pos1+1,length(ls_lshstr1)-li_pos1); else ls_lsh1:=ls_lshstr1; end if;
loop li_pos2:=f_pos(ls_lshstr2,','); if li_pos2 >0 then ls_lsh2:=substr(ls_lshstr2,1,li_pos1-1); ls_lshstr2:=substr(ls_lshstr2,li_pos1+1,length(ls_lshstr2)-li_pos1); else ls_lsh2:=ls_lshstr2; end if;
insert into table (a,b ) values(ls_lsh1,ls_lsh2); if li_pos2=0 then exit; end if; end loop;
if li_pos1=0 then exit; end if; end loop; commit; end p_insert_tab;
function f_pos(as_str1 in varchar2,as_str2 in Varchar2) return number is
i number;
begin
for i in 1..length(as_str1) loop
if substr(as_str1,i,length(as_str2))= as_str2 then
return i;
end if ;
end loop;
return 0;
end f_pos;
存储过程
procedure p_insert_tab(as_lshstr1 in varchar2,as_lshstr2 varchar2) is
li_pos1 integer;
li_pos2 integer;ls_lsh1 varchar2(100);
ls_lsh2 varchar2(100);
ls_lshstr1 varchar2(1000);
ls_lshstr2 varchar2(1000);
beginls_lshstr1:=as_lshstr1;
ls_lshstr2:=as_lshstr2;
loop
li_pos1:=f_pos(ls_lshstr1,',');
if li_pos1 >0 then
ls_lsh1:=substr(ls_lshstr1,1,li_pos1-1);
ls_lshstr1:=substr(ls_lshstr1,li_pos1+1,length(ls_lshstr1)-li_pos1);
else
ls_lsh1:=ls_lshstr1;
end if;
loop
li_pos2:=f_pos(ls_lshstr2,',');
if li_pos2 >0 then
ls_lsh2:=substr(ls_lshstr2,1,li_pos1-1);
ls_lshstr2:=substr(ls_lshstr2,li_pos1+1,length(ls_lshstr2)-li_pos1);
else
ls_lsh2:=ls_lshstr2;
end if;
insert into table (a,b ) values(ls_lsh1,ls_lsh2);
if li_pos2=0 then
exit;
end if;
end loop;
if li_pos1=0 then
exit;
end if;
end loop;
commit;
end p_insert_tab;