【问题标题】:password verify function error ora - 06503密码验证功能错误 ora - 06503
【发布时间】:2014-11-30 05:08:57
【问题描述】:

我创建了一个密码至少为 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 的个人资料像

“更改配置文件 user1 限制密码_验证_功能密码_功能”

然后,当我尝试使用 user1 个人资料和 9 个字符的密码创建用户时,出现以下错误。

SQL> 创建由 Passowrd1 配置文件 user1 标识的用户测试; 创建由 Passowrd1 标识的用户测试 * 第 1 行出现错误:

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

ORA-06503:PL/SQL:函数返回无值

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

【问题讨论】:

  • ORA-28003: 好像没问题,如果输入正确的密码会怎样?
  • "ORA-06503: PL/SQL: function returned without value" 表示您的函数不返回任何值(在某些情况下可能)。您确定您列出的代码与您创建用户时使用的代码完全相同吗?

标签: oracle plsql


【解决方案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)

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2017-12-22
    • 2014-12-18
    • 2012-12-07
    • 1970-01-01
    • 2012-10-04
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多