在oracle apex中创建自定义身份验证时出错

在oracle apex中创建自定义身份验证时出错,oracle,authentication,oracle-apex,basic-authentication,Oracle,Authentication,Oracle Apex,Basic Authentication,我是Apex的新手,我正在尝试创建自定义身份验证 下面是我正在使用的身份验证功能: FUNCTION authenticate(username_in IN VARCHAR2 ,password_in IN VARCHAR2) RETURN BOOLEAN IS l_value NUMBER; l_returnvalue BOOLEAN; BEGIN BEGIN SELECT

我是Apex的新手,我正在尝试创建自定义身份验证

下面是我正在使用的身份验证功能:

FUNCTION authenticate(username_in IN VARCHAR2
                                        ,password_in IN VARCHAR2) RETURN BOOLEAN IS
   l_value       NUMBER;
   l_returnvalue BOOLEAN;
 BEGIN
   BEGIN
     SELECT 1
       INTO l_value
       FROM users
      WHERE 1 = 1
        AND upper(users.username) = upper(username_in)
        AND users.password = password_in;
   EXCEPTION
     WHEN no_data_found
          OR too_many_rows THEN
       l_value := 0;
     WHEN OTHERS THEN
       l_value := 0;
   END;
   l_returnvalue := l_value = 1;
   RETURN l_returnvalue;
 END;
我使用的users表有三列

身份证件 用户名, 暗语 下面是我在尝试验证PL/SQL块中的函数时看到的错误

ORA-06550:第1行,第73列:PLS-00103:在预期以下情况之一时遇到符号身份验证::=。@%;这个 符号:=已替换为身份验证以继续。ORA-06550: 第1行第101列:PLS-00103:在 应为以下情况之一:符号被替换为 VARCHAR2继续。ORA-06550:第2行第57列:PLS-00103: 预期出现以下情况之一时遇到符号VARCHAR2: ORA-06550:第24行


谢谢。

在apex.oracle.com apex 5.0上:这看起来确实像个bug。但这并不能阻止你拯救这个计划。只需创建或应用,它将正确验证您的代码块,并显示任何正确和相关的错误。最好在官方论坛上报告这一点,或者如果您有通过官方支持的支持标识符

还要注意,您的身份验证功能不正确。以下是一些相关信息,您也可以通过查看该项目的帮助来查看:

指定将验证用户用户名的函数的名称 和密码,在登录页面上输入后。如果你进去 没有,您允许任何用户名/密码成功。功能 自身可以在身份验证的“PL/SQL代码”文本区域中定义, 在包内或作为存储函数

此函数必须向调用的登录过程返回布尔值 信息技术它有两个输入参数“p_用户名”和“p_密码”,可以 用于访问最终用户在登录页面上输入的值


您的输入参数必须是上述两个

谢谢你的回复,汤姆。你能提供一个适用于我上面提到的users表的示例函数吗?你几乎不需要做任何事情,只需要更改参数的名称。例如,从username_in到p_username,同样地,从password_in到p_password。如果单击方案定义中项目的“帮助”链接,您也可以在那里找到示例代码,尽管您所拥有的应该可以工作。不过,我会删除where子句中的1=1,因为它没有任何作用。谢谢你的帮助,汤姆。