Oracle10g,先写一个存储过程CREATE OR REPLACE procedure show_string_info(p_str VARCHAR2) AS l_tab DBMS_UTILITY.uncl_array; l_tablen NUMBER; l_list VARCHAR2 (1000); BEGIN l_list := p_str; l_list := replace(p_str,'|',','); DBMS_UTILITY.comma_to_table (l_list, l_tablen, l_tab); DBMS_OUTPUT.PUT_LINE(l_tablen); for i in 1..l_tablen loop dbms_output.put_line(l_tab(i)); end loop;END; / 然后exec show_string_info('盐田区|龙岗区|宝安区|南山区|福田区|罗湖区')
写了个简单的,你可能要改改 declare vStr varchar2(200); vStr1 varchar2(100); begin vStr := '盐田区|龙岗区|宝安区|南山区|福田区|罗湖区'; if instr(vStr,'|',1)>0 then while instr(vStr,'|',1)>0 loop select substr(vStr,1,instr(vStr,'|',1)-1), substr(vStr,instr(vStr,'|',1)+1,length(vStr)-instr(vStr,'|',1)) into vStr1,vStr from dual; dbms_output.put_line(vStr1); end loop; dbms_output.put_line(vStr); else dbms_output.put_line(vStr); end if; end;
写成存储过程了 --iStr 输入的字符串,pStr 分隔符 create or replace procedure P_ListStr(iStr varchar2,pStr varchar2) as vStr varchar2(1000); vStr1 varchar2(100); begin vStr := iStr; if instr(vStr,pStr,1)>0 then while instr(vStr,pStr,1)>0 loop select substr(vStr,1,instr(vStr,pStr,1)-1), substr(vStr,instr(vStr,pStr,1)+1,length(vStr)-instr(vStr,pStr,1)) into vStr1,vStr from dual; dbms_output.put_line(vStr1); end loop; dbms_output.put_line(vStr); else dbms_output.put_line(vStr); end if; end;执行结果: zxf2@ORCL> exec p_listStr('盐田区|龙岗区|宝安区|南山区|福田区|罗湖区','|'); 盐田区 龙岗区 宝安区 南山区 福田区 罗湖区PL/SQL 过程已成功完成。
l_tab DBMS_UTILITY.uncl_array;
l_tablen NUMBER;
l_list VARCHAR2 (1000);
BEGIN
l_list := p_str;
l_list := replace(p_str,'|',','); DBMS_UTILITY.comma_to_table (l_list, l_tablen, l_tab);
DBMS_OUTPUT.PUT_LINE(l_tablen); for i in 1..l_tablen loop
dbms_output.put_line(l_tab(i));
end loop;END;
/
然后exec show_string_info('盐田区|龙岗区|宝安区|南山区|福田区|罗湖区')
declare
vStr varchar2(200);
vStr1 varchar2(100);
begin
vStr := '盐田区|龙岗区|宝安区|南山区|福田区|罗湖区';
if instr(vStr,'|',1)>0 then
while instr(vStr,'|',1)>0 loop
select substr(vStr,1,instr(vStr,'|',1)-1),
substr(vStr,instr(vStr,'|',1)+1,length(vStr)-instr(vStr,'|',1)) into vStr1,vStr from dual;
dbms_output.put_line(vStr1);
end loop;
dbms_output.put_line(vStr);
else
dbms_output.put_line(vStr);
end if;
end;
--iStr 输入的字符串,pStr 分隔符
create or replace procedure P_ListStr(iStr varchar2,pStr varchar2)
as
vStr varchar2(1000);
vStr1 varchar2(100);
begin
vStr := iStr;
if instr(vStr,pStr,1)>0 then
while instr(vStr,pStr,1)>0 loop
select substr(vStr,1,instr(vStr,pStr,1)-1),
substr(vStr,instr(vStr,pStr,1)+1,length(vStr)-instr(vStr,pStr,1)) into vStr1,vStr from dual;
dbms_output.put_line(vStr1);
end loop;
dbms_output.put_line(vStr);
else
dbms_output.put_line(vStr);
end if;
end;执行结果:
zxf2@ORCL> exec p_listStr('盐田区|龙岗区|宝安区|南山区|福田区|罗湖区','|');
盐田区
龙岗区
宝安区
南山区
福田区
罗湖区PL/SQL 过程已成功完成。