需要在自定义函数返回值的地方,增加关键字:DETERMINISTIC
原来的函数:
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)RETURN VARCHAR2 IS retval varchar2(32); BEGIN IF LENGTHB(passwd)>0 THEN retval := LOWER(utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd))) ; RETURN retval; ELSE RETURN passwd; END IF; END;
修改后:
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)RETURN VARCHAR2 DETERMINISTIC IS retval varchar2(32); BEGIN IF LENGTHB(passwd)>0 THEN retval := LOWER(utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd))) ; RETURN retval; ELSE RETURN passwd; END IF; END;
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------
转载请注明本文标题和链接:《给自定义函数创建索引时,报错:SQL 错误 [30553] [99999]: ORA-30553: 函数不能确定》
发表评论