GL账户段值获取

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值