sql:翻译存在逗号的字典


函数1,获取翻译字典表

        tj_bmk.t_code_all:字典表名

        code_name:代码中文名

        code_id:代码

         file:代码类别

CREATE OR REPLACE FUNCTION codedetail (inkind IN VARCHAR2, incode IN VARCHAR2)
   RETURN VARCHAR2
IS
   detailvalue   tj_bmk.t_code_all.code_name%TYPE;
BEGIN

   IF inkind IS NULL OR incode IS NULL
   THEN
      RETURN NULL;
   END IF;

  SELECT nvl(code_name,code_id)
   INTO detailvalue
     FROM tj_bmk.t_code_all where code_id=incode AND fiel=inkind;


   RETURN detailvalue;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      RETURN incode;
     -- RETURN '';
END;

函数2,翻译包括用逗号隔开的代码

 先创建上面的函数,然后下面这个函数直接创建即可

create or replace function f_transation_detail(inkind varchar2,in_zdryxl in varchar2) return varchar2 is
  res varchar2(2000);
  start_index number := 1;
  end_index number := 1;
begin

  end_index := instr(in_zdryxl,',',start_index);
  if end_index + 1 > 1 then
    res := codedetail(inkind,substr(in_zdryxl, start_index, end_index - 1));
    start_index := end_index;
    while end_index + 1 > 1 loop
        end_index := instr(in_zdryxl,',',start_index + 1);
        if end_index = 0 then
          res := res ||','||codedetail(inkind,substr(in_zdryxl,start_index + 1));
        else
          res := res ||','||codedetail(inkind,substr(in_zdryxl,start_index + 1,end_index - start_index - 1));
        end if;
        start_index := end_index;
    end loop;
  else
    res := codedetail(inkind,in_zdryxl);
  end if;
  return(res);
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值