Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE
- OBJTYPE_FSFM_EXCHANGE_ERRORS CONSTANT INTEGER := 4500; -- Коды ошибок обмена с ФСФМ
- FUNCTION IsExist(token IN VARCHAR2)
- RETURN NUMBER
- IS
- v_existFlag NUMBER := 0;
- BEGIN
- SELECT T_ELEMENT INTO v_existFlag FROM dllvalues_dbt WHERE t_List = OBJTYPE_FSFM_EXCHANGE_ERRORS AND t_Code = token;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN RETURN 0;
- RETURN v_existFlag;
- END;
- FUNCTION BildErrorCodeStr(str IN VARCHAR2)
- RETURN VARCHAR2
- IS
- v_ErrorCodeStr VARCHAR2 (4000) := '';
- BEGIN
- DECLARE
- v_currPos NUMBER := 0;
- v_ErrorCodeTMP VARCHAR2 (10) := '';
- LOOP
- EXIT WHEN v_currPos > LENGTH(str);
- IF (str[v_currPos] == 'X')
- SELECT t_Code INTO v_ErrorCodeTMP FROM dllvalues_dbt WHERE t_List = OBJTYPE_FSFM_EXCHANGE_ERRORS AND T_ELEMENT = v_currPos;
- --Если последний эллемент, то разделительь (;) не ставим
- IF (v_currPos == LENGTH(str))
- v_ErrorCodeStr := v_ErrorCodeStr || v_ErrorCodeTMP;
- END IF;
- v_ErrorCodeStr := v_ErrorCodeStr || ';' || v_ErrorCodeTMP;
- END IF;
- v_currPos := v_currPos + 1;
- END LOOP;
- RETURN v_ErrorCodeStr;
- END;
- FUNCTION RemoveDuplicates(str IN VARCHAR2)
- RETURN VARCHAR2
- IS
- v_str VARCHAR2(4000) := str;
- v_new_str VARCHAR2(4000) := '';
- v_resultErrorCode VARCHAR2(10):= '';
- BEGIN
- WHILE LENGTH(v_str) > 0 LOOP
- IF INSTR(v_str, ';') > 0 THEN
- -- Получаем очередной токен и обрезаем строку
- DECLARE
- v_token VARCHAR2(100) := SUBSTR(v_str, 1, INSTR(v_str, ';')-1);
- v_existFlag NUMBER := 0;
- BEGIN
- v_existFlag := IsExist(v_token)
- IF (v_existFlag)
- v_resultErrorCode[v_existFlag] := 'X';
- END IF;
- END;
- ELSE
- -- Остался последний токен в строке
- DECLARE
- v_token VARCHAR2(100) := v_str;
- BEGIN
- -- Проверяем, есть ли этот токен в новой строке
- v_existFlag := IsExist(v_token)
- IF (v_existFlag)
- v_resultErrorCode[v_existFlag] := 'X';
- END IF;
- END;
- END IF;
- END LOOP;
- RETURN BildErrorCodeStr(v_resultErrorCode);
- END;
- BEGIN
- DBMS_OUTPUT.put_line(remove_duplicates('33;22;22;111;111;55'));
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement