用两个数组分别存放字段名:
fename[aaa,bbb,ccc],fcname[第一,第二,第三]
之后,生成最后的sql="select "+a(1)+b(1)+","...

解决方案 »

  1.   

    kmlinda的思路不错。
    我正在考虑用正则表达式,还不知能否解决。
      

  2.   

    declare
      thesql varchar2(100):='Select aaa,bbb,ccc From Table1';
      newsql varchar2(100):='第一, 第二, 第三,gerger';
      pos1 number(8):=0;
      pos2 number(8):=0;
      newpos1 number(8);
      newpos2 number(8);
      result varchar2(200):='';
      s varchar2(100);
    begin
      loop
        newpos1:= Instrb(thesql, ',', pos1+1);
        exit when newpos1=0;
        newpos2 := Instrb(newsql, ',', pos2+1);
        if newpos2=0 then
          newpos2:=lengthb(newsql)+1;
        end if;
        result:= result || substrb(thesql, pos1+1, newpos1-pos1-1) || ' ' || substrb(newsql,pos2+1,newpos2-pos2-1) || ',';
        pos1 := newpos1;
        pos2 := newpos2;
      end loop;
      s:=trim(substrb(thesql,pos1+1));
      pos1:=Instrb(s,' ');
      newpos2 := Instrb(newsql, ',', pos2+1);
      if newpos2=0 then
        newpos2:=lengthb(newsql)+1;
      end if;
      result := result || substrb(s,1,pos1) || substrb(newsql,pos2+1,newpos2-pos2-1) || substrb(s,pos1);
      dbms_output.put_line(result);
    end;
    /