//由数据字典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_提现
本文介绍了一个Oracle数据库中的自定义函数GET_DICNAMES_BY_DICCODES,该函数用于将一组数据字典代码转换为对应的名称集合。通过输入包含多个代码值的字符串、分隔符以及数据字典类型,此函数能够返回这些代码所对应的名称,并以逗号分隔。

422

被折叠的 条评论
为什么被折叠?



