把a和b作为两个数组,然后按下标作循环

解决方案 »

  1.   

    --用于分割的函数,参数(分割的字符串,依据分割的字符)
    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;