日期:2014-05-17  浏览次数:20744 次

. 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 收藏 关于存储过程动态截取字符串问题【急急】
数据库传过去是这样的格式
101518-销售合同评审流程 [ HTP-20130114-001 ] |101470-销售合同评审流程 [ HTP-20130109-001 ]
我只取前面的ID
101518 这样的
客户有可能传三个这样的 有可能1个 有可能更多

请问存储过程如何截取? 
存储 数据库

------解决方案--------------------
oracle

create or replace procedure strcut(str varchar2)
as
type c_array  is table of varchar2(10) index by binary_integer;
p number default 0;
idx number default 0;
strc varchar2(200);
ca c_array;
begin
strc:=str;
loop   
p:=instr(strc,'-',1);
exit when p=0;
ca(idx):=substr(strc,1,p-1);
print(ca(idx));
idx:=idx+1;

p:=instr(strc,'
------解决方案--------------------
',1);
exit when p=0;
strc:=substr(strc,p+1,length(strc));
end loop;
end strcut;    
/


call strcut('101518-销售合同评审流程 [ HTP-20130114-001 ] 
------解决方案--------------------
101470-销售合同评审流程 [ HTP-20130109-001 ]');