create or replace procedure separate_string(string1 in varchar2) as
begin
  declare splitchar varchar2(10):=';';  --标识分隔字符
           L number:=1; --第一次查找位置
           S number;   --下一次查找字符的开始位置
           str varchar2(30);
          
    begin
     
     if L<=length(string1)then
         S:=instr(string1,splitchar,L);
         dbms_output.put_line(S);
         L:=S+1;
     end if;        
   --   str:=substr(string1,L,S-L);
   --   dbms_output.put_line(str);         
     end;
end;
————————————————————
测试用..
begin 
   separate_string('njo;kjokj;jjm');
end;只能出一个结果 4 ————————————————————————
但是 上面的过程改成
用while loop 就能出结果..