Загрузка данных


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;