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 就能出结果..
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 就能出结果..
你的存储过程中,只有IF判断,取了一次;所在的位置,然后就end了啊。没有循环当然出不来结果了啊。
改成Loop的话,肯定循环多次,就对了呗。