1  DECLARE
  2    depcode VARCHAR2(100);
  3    A       VARCHAR2(100);
  4    depcode_d VARCHAR2(100);
  5  BEGIN
  6    depcode:='abc,def,ghi,jkl';
  7    a:= instr(depcode,',',1,1);
  8    while a>0 loop
  9      depcode_d:=substr(depcode,1,a-1);
 10      depcode:=substr(depcode,a+1);
 11      dbms_output.put_line(depcode_d);
 12      a:= instr(depcode,',',1,1);
 13    end loop;
 14    dbms_output.put_line(depcode);
 15* END;
SQL> /
abc
def
ghi
jkl

解决方案 »

  1.   

    depcode:='abc,def,ghi,jkl';if substr(depcode,-1) <> ',' then
      depcode := depcode ||',';
    end if;a:= instr(depcode,',',1,1);
    while a>0 loop             
        depcode_d:=substr(depcode,1,a-1);
        depcode:=substr(depcode,a+1);
        dbms_output.put_line(depcode_d);
    end loop;
      

  2.   

    depcode:='abc,def,ghi,jkl';
    b := 1;
    while a>0 loop             
        a:= instr(depcode,',',b,1);
        if a > 0 then
           depcode_d:=substr(depcode,b,a-b);
        else
           depcode_d:=substr(depcode,b);
        end if;
        dbms_output.put_line(depcode_d);
        b: = a+1;
    end loop;
      

  3.   

    哇,楼主,你害死我了!!!depcode:='abc,def,ghi,jkl';if substr(depcode,-1) <> ',' then
      depcode := depcode ||',';
    end if;a:= instr(depcode,',',1,1);
    while a>0 loop             
        depcode_d:=substr(depcode,1,a-1);
        depcode:=substr(depcode,a+1);
        dbms_output.put_line(depcode_d);
        a := instr(depcode,',',1,1);       --居然没有这一行
    end loop;