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;
oracle 证件脱敏存储过程
最新推荐文章于 2022-11-25 14:31:24 发布