首页 文章

密码验证功能错误ora - 06503

提问于
浏览
1

我创建了一个密码长度至少为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>创建由Passowrd1 profile user1标识的用户测试;在第1行创建由Passowrd1 * ERROR标识的用户测试:

ORA-28003:指定密码的密码验证失败

ORA-06503:PL / SQL:返回没有值的函数

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

1 回答

  • 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)<8

相关问题