oracle 证件脱敏存储过程

CREATE OR REPLACE FUNCTION JRJCSJ.DESEN_ID(FIELDVALUETYPE in VARCHAR2,FIELDVALUE in VARCHAR2) return varchar2 is
  RESU varchar2(1000);
  RESU1 varchar2(2000);
  MD5VALUE VARCHAR2(500);
begin
-- 定义一个游标
declare
     cursor cur_test is select A.column_value AS column_value,B.column_value AS column_type from table(split(FIELDVALUE)) A,table(split(FIELDVALUETYPE)) B;

begin
  -- 循环游标遍历结果
   for c in cur_test loop
       RESU := c.column_value;
  /***
   * 对身份证进行脱敏操作,当身份证类型不等于其他时,身份证件号码前14字节+MD5(身份证件号码全文UTF-8编码)
   *对身份证进行脱敏操作,当身份证类型不等于其他时,MD5(身份证件号码全文UTF-8编码)
   *
   */
       IF c.column_type!='B99' and c.column_value IS NOT NULL and LENGTHb(c.column_value)>=14
       THEN
          MD5VALUE:=upper(c.column_value);
          MD5VALUE:= lower(Utl_Raw.Cast_To_Raw(dbms_obfuscation_toolkit.md5(input_string => MD5VALUE)));
          RESU := SUBSTRB(c.column_value,0,14)||MD5VALUE;
       elsif  c.column_type='B99' and c.column_value IS NOT NULL
       THEN
          MD5VALUE:=upper(c.column_value);
          MD5VALUE:= lower(Utl_Raw.Cast_To_Raw(dbms_obfuscation_toolkit.md5(input_string => MD5VALUE)));
          RESU := MD5VALUE;
       else
          RESU := c.column_value;
        END IF;
    IF RESU1 IS NOT NULL then
      RESU1 :=RESU1||','||RESU;
    else
      RESU1 :=RESU;
      END IF;
   end loop;
end;
 return RESU1;
end DESEN_ID;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值