CREATE OR REPLACE FUNCTION MEW_GET_ACCOUNT_SEGMENT_FNC(P_CONCATED_SEGMENTS VARCHAR2
,P_SEGMENT_NUM NUMBER)
RETURN VARCHAR2 IS
V_SEGMENT_CODE VARCHAR2(30);
V_DOT_COUNT NUMBER;
BEGIN
SELECT INSTR(P_CONCATED_SEGMENTS
,'.'
,1
,P_SEGMENT_NUM - 1)
INTO V_DOT_COUNT
FROM DUAL;
IF V_DOT_COUNT = 0
THEN
V_SEGMENT_CODE := '获取科目段值发生例外';
RETURN V_SEGMENT_CODE;
END IF;
--获取第一段的段值
IF P_SEGMENT_NUM = 1
THEN
SELECT SUBSTR(P_CONCATED_SEGMENTS
,1
,INSTR(P_CONCATED_SEGMENTS
,'.'
,1) - 1)
INTO V_SEGMENT_CODE
FROM DUAL;
ELSIF 2 <= P_SEGMENT_NUM AND
P_SEGMENT_NUM <= 6
THEN
--获取第其它段的段值
SELECT SUBSTR(P_CONCATED_SEGMENTS
,INSTR(P_CONCATED_SEGMENTS
,'.'
,1
,P_SEGMENT_NUM - 1) + 1
,INSTR(P_CONCATED_SEGMENTS
,'.'
,1
,P_SEGMENT_NUM) -
INSTR(P_CONCATED_SEGMENTS
,'.'
,1
,P_SEGMENT_NUM - 1) - 1)
INTO V_SEGMENT_CODE
FROM DUAL;
ELSIF P_SEGMENT_NUM = 7
THEN
SELECT SUBSTR(P_CONCATED_SEGMENTS
,INSTR(P_CONCATED_SEGMENTS
,'.'
,1
,P_SEGMENT_NUM - 1) + 1)
INTO V_SEGMENT_CODE
FROM DUAL;
END IF;
RETURN V_SEGMENT_CODE;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;