create or replace procedure SP_MID_SPLIT_STRING_SP_END(out_name out varchar2, permIds in varchar2) is
--permIds的格式 如:5,8,9,45,56,78
p_start number; --开始的指针,这个为依次增加的,记录","的个数
l_position1 number; --起始位置
l_position2 number;
sub_string VARCHAR2(50); --每次得到的子串
l_lastPosition number;
begin
out_name := '';
p_start := 1;
l_position1 := 1;
l_lastPosition:= 0;
SP_MID_SPLIT_STRING_SP_ENDloop
l_position2 := instr(permIds, '.', 1, p_start); --l_position2 找到“\”的位置
exit when l_position2 = 0;
/* l_position2 - l_position1 为截取长度*/
sub_string := substr(permIds, l_position1, l_position2 - l_position1);
if (l_position2 != 0) then
l_lastPosition := l_position2+1; --记录倒数第二次l_position2的位置,以方便求得最后一个权限
end if;
l_position1 := l_position2 + 1;
p_start := p_start + 1;
end loop;
--找出最后一个
if (l_lastPosition!= length(permIds)) then
l_lastPosition:=l_lastPosition-2;
sub_string := substr(permIds,1 , l_lastPosition);
out_name:=sub_string;
end if;