通过数据库Function函数转换字典项,把码值转换成字典名称

如有一个表code_library

codenoitemnoitemname
YesNo1
YesNo2

 下边的函数为转换写法
以下函数为通过字典代码获取数据字典中的字典名称

CREATE OR REPLACE FUNCTION getSplitCodeName(pString varchar2,pCode varchar2,pSplit varchar2)
--pString 字符串
--pCode CodeNo
--pSplit 分隔符
--注:字符串不能以分割符结尾
--return 定义返回值类型
return varchar2
--is定义变量
is
--varchar2的最大存储长度是4000
vString varchar2(4000);
sString varchar2(4000);
v_idx interger;
v_str varchar2(500);
--  :=赋值符   ||连接符 
-- ":="是赋值语句 如: l_name :='sky';...
-- "=" 是判断是否相等. 如: if 1=1 then...
-- ":" 是变量绑定 如:  if :P_NAME ='sky' then...
v_strs_last varchar2(4000) := pString || pSplit;
dCount number;
begin
    sString := '';
    loop
        --注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束,第一次出现的位置。
        v_idx := instr(v_strs_last,pSplit);
        --if后面的语句csdn目前不能识别,所以加上了注释标志,用的时候请去掉
        if --v_idx > 0
          then
--nvl(str1, str2) 如果str1为null,则返回表达式str2的值。如果str1不为null,则返回表达式str1的值。
-- 格式1: substr(string string, int a, int b);
--  格式2:substr(string string, int a) ;
-- 解释:
--    格式1:
--       1、string 需要截取的字符串
--       2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
--       3、b 要截取的字符串的长度
--    格式2:
--        1、string 需要截取的字符串
--        2、a 可以理解为从第a个字符开始截取后面所有的字符串。
                v_str :=nvl(substr(v_strs_last,0,v_idx-1));
                v_strs_last := substr(v_strs_last,v_idx+1);

                select count(1) into dCount form Code_library where ItemNo = v_str  and CodeNo = pCode;
                --if后面的语句csdn目前不能识别,所以加上了注释标志,用的时候请去掉
                if --dCount>0 
                then
                select nvl(ItemName,'') into vString form Code_library where ItemNo = v_str  and CodeNo = pCode;
            end if;
        else
            v_str := v_strs_last;
        exit;
        end if;
    end loop;
    return substr(sString,2);
end;

使用方法为

select  getSplitCodeName('1,2','YesNo',',') as itemname form dual;

itemname
是,否

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值