工作需要使用sql對某個字段進行加密處理,創(chuàng)建MD5處理函數(shù)如下:
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)RETURN VARCHAR2
IS
????retval varchar2(32);
BEGIN
????retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
????RETURN retval;
END;
使用示例:
select md5(123) from dual

select md5(123) from dual
但是跑數(shù)中途遇到如下報錯:

ORA-28231
檢查發(fā)現(xiàn),當md5函數(shù)輸入?yún)?shù)為空時,導致報錯,修改函數(shù)如下,解決:
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)RETURN VARCHAR2
IS
????retval varchar2(32);
BEGIN
????retval := (case when passwd is null then null else utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) end);
????RETURN retval;
END;