由数据字典codes集,获取数据字典names集--oracle方式

本文介绍了一个Oracle数据库中的自定义函数GET_DICNAMES_BY_DICCODES,该函数用于将一组数据字典代码转换为对应的名称集合。通过输入包含多个代码值的字符串、分隔符以及数据字典类型,此函数能够返回这些代码所对应的名称,并以逗号分隔。
//由数据字典codes集,获取数据字典names集--oracle方式
CREATE OR REPLACE FUNCTION GET_DICNAMES_BY_DICCODES(
srcValues  IN VARCHAR2,
splitvalue IN VARCHAR2,
dictype    in varchar2) RETURN VARCHAR2
IS
v_pos       NUMBER;
v_result    VARCHAR2(2000) := '0';
v_code      VARCHAR2(10);
v_codeName  VARCHAR2(40);
v_valuestmp varchar2(2000);
BEGIN
  v_valuestmp := srcValues;
  loop
    v_pos :=  instr(v_valuestmp,splitvalue,1,1);
    if v_pos =0 then
      v_code := v_valuestmp;
    else
       v_code :=  substr(v_valuestmp,1,v_pos-1);
    end if;
    begin
      select dic_name into v_codeName
        from dictionaryitem t
        where t.dic_type = dictype and dic_code = v_code;
    EXCEPTION
      WHEN OTHERS THEN
        v_codeName := v_code;
    end;
    if v_result = '0' then
       v_result := v_codeName;
    else
       v_result := v_result||','||v_codeName;
    end if;
    v_valuestmp := substr(v_valuestmp,v_pos+1);
    if v_pos = 0 then
        exit;
    end if ;
  end loop;
  RETURN v_result;
 EXCEPTION
    WHEN OTHERS THEN
      RETURN '';
END GET_DICNAMES_BY_DICCODES;


测试示例:

--select GET_DICNAMES_BY_DICCODES('01,02,03,04',',','BUSI_TYPES') from dual;

输出结果:
01_消费,02_退款,03_转账,04_提现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值