如何在ORACLE中创建一个函数来检查密码?
密码应包含:
>至少1个大写字母
>至少1个小写字母
>至少1位数
>至少8个字符长
>不包含3个连续的用户名字母
到目前为止,我达到了以下目标:
CREATE OR REPLACE FUNCTION dd_pwd_fun(username varchar2,password varchar2) RETURN BOOLEAN IS PWD_STR VARCHAR2 USER_NAME BEGIN PWD_STR = password; USER_NAME=username; IF LENGTH(PWD_STR) < 8 THEN RETURN FALSE; END IF; if regexp_like(:PWD_STR,'^.*[a-z].*$') -- this is for small letter from a -z and regexp_like(:PWD_STR,'^.*[A-Z].*$') -- this is for capital letters and regexp_like(:PWD_STR,'^.*[0-9].*$') -- this is for numbers
这是我第一次使用正则表达式,我需要一些帮助来找到最后一个要求的解决方案,而且我想知道我是否在正确的轨道上
Oracle提供了一个在SYS下编译的函数,用于密码验证,并且复杂.您将在$ORACLE_HOME / rdbms / admin / utlpwdmg.sql中找到它.
原文链接:/regex/451908.html使用不同的版本,该功能已被修改,并添加了新功能.在10g中,复杂性检查非常简单.在12c之前,有两个函数verify_function(10g)和verify_function_11G(11g).使用12c,还有另外四个函数,ora12c_verify_function,ora12c_strong_verify_function和两个辅助函数complexity_check和string_distance.
由于您使用的是10g,因此您可以编写UDF以强制执行更复杂的密码验证检查.在较新版本中搜索函数及其内容,并在UDF中应用类似的逻辑.看看http://www.oradba.ch/2013/07/oracle-12c-new-password-verify-function/