create or replace function my_SPL
( var_in varchar2, --原始字符串
spl_in varchar2, --分隔符
step_in number --间隔长度
)
return varchar2 ---用于字符串分割
is
ERR_CUSTOM EXCEPTION;
ERR_STR VARCHAR2(100);
n_length number(18); --分段数
n_count number(18);
v_temp VARCHAR2(4000);
v_string VARCHAR2(4000);
BEGIN
n_count:=0;
v_temp:='';
v_string:=var_in;
select ceil(length(v_string)/step_in) into n_length from dual;
for n_count in 1 .. n_length loop
if length(v_string)>=step_in then
v_temp:=v_temp||substr(v_string,0,step_in)||spl_in;
v_string:=substr(v_string,step_in+1,length(var_in));
else
v_temp:=v_temp||substr(v_string,0,step_in);
end if;
end loop;
return v_temp;
EXCEPTION
WHEN ERR_CUSTOM THEN
RAISE_APPLICATION_ERROR(-20101,'[ZLSOFT]'||ERR_STR||'[ZLSOFT]');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20101,SQLCODE||SQLERRM);
END my_SPL;