function GET_INTERVAL_FOR_NUMBER(P_NUMVAL IN number,P_INTERVALS IN varchar2,P_TYPE IN number := 1,P_SUFFIX IN varchar2 := '+') return varchar2 is
--# 3108,2
RESULT varchar2(200);
KEY pls_integer;
VALUE_KEY varchar2(128);
INTERVAL_ARR DBMS_SQL.NUMBER_TABLE;
begin
--# 3115,6
KEY := 1;
while REGEXP_SUBSTR(P_INTERVALS,'[^;]+',1,KEY) is not NULL loop
--# 3118,13
VALUE_KEY := REGEXP_SUBSTR(P_INTERVALS,'[^;]+',1,KEY);
VALUE_KEY := REGEXP_REPLACE(VALUE_KEY,'\D','');
INTERVAL_ARR(KEY) := case when VALUE_KEY is NULL then null else TO_NUMBER(VALUE_KEY) end;
--# 3122,7
KEY := KEY+1;
end loop;
--# 3126,2
for I in 1..INTERVAL_ARR.COUNT loop
--# 3128,3
if P_NUMVAL > INTERVAL_ARR(I) or I = 1 and P_NUMVAL = INTERVAL_ARR(I) then
--# 3130,4
if (I+1) <= INTERVAL_ARR.COUNT then
--# 3131,5
if P_NUMVAL <= NVL(INTERVAL_ARR(I+1),P_NUMVAL+1) then
--# 3132,6
if INTERVAL_ARR(I+1) is not NULL then
--# 3133,7
if P_TYPE = 1 then
--# 3134,15
RESULT := INTERVAL_ARR(I)||' - '||INTERVAL_ARR(I+1);
else
--# 3136,8
if I = 1 and INTERVAL_ARR(I) = P_NUMVAL then
--# 3137,16
RESULT := INTERVAL_ARR(I);
else
--# 3139,16
RESULT := LPAD(INTERVAL_ARR(I)+1,3,'0')||'_'||INTERVAL_ARR(I+1);
end if;
end if;
else
--# 3143,14
RESULT := INTERVAL_ARR(I)||P_SUFFIX;
end if;
--# 3145,6
exit ;
else
--# 3147,6
continue;
end if;
else
--# 3151,12
RESULT := 'Интревал не найден!';
end if;
end if;
end loop;
--# 3156,2
return RESULT;
end;