我创建了一个密码长度至少为8个字符的函数。
CREATE OR REPLACE FUNCTION password_function (
username VARCHAR2,
password VARCHAR2,
old_password VARCHAR2)
RETURN BOOLEAN AS
BEGIN
IF LENGTH(password) < 8 THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END password_function;
/
比我更改了像
这样的user1个人资料“alter profile user1 limit password_verify_function password_function”
然后当我尝试使用user1配置文件和9个字符的密码创建用户时,我收到了以下错误。
SQL&GT;创建由Passowrd1 profile user1标识的用户测试; 创建Passowrd1标识的用户测试 * 第1行的错误:
ORA-28003:指定密码的密码验证失败
ORA-06503:PL / SQL:函数返回没有值
你可以告诉我我的功能有什么问题吗?以及如何解决它?答案 0 :(得分:1)
看来,您没有向我们展示的代码存在问题。
你的函数password_function ()
必须在某个地方使用(我想在另一个函数中)并且似乎在该调用函数中缺少一个返回。
请在致电alter profile ...
后确认是否有退货。
另一件事:
IF LENGTH(password) < 8 THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
如果新密码为空,此代码将返回true!
LENGTH(null)= null
更好的是:
NVL(LENGTH(null),0)&lt; 8