【发布时间】:2014-12-18 18:39:09
【问题描述】:
如何在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 中实施密码复杂性”方面的帮助?
-
为了强制执行密码,我所需要的不就是将验证功能添加到所需的配置文件吗?在创建此函数时,我需要正则表达式或常规 PL/SQL 方面的帮助。
-
@NicholasKrasnov 有什么想法或帮助吗?
-
写UDF不用花太多力气,Oracle提供了这样的功能。检查我的答案。