密码验证功能错误ora - 06503

时间:2014-11-30 05:08:58

标签: oracle plsql

我创建了一个密码长度至少为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:函数返回没有值

你可以告诉我我的功能有什么问题吗?以及如何解决它?

1 个答案:

答案 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