ORA-01722无效数字,尽管未对数字进行任何转换

问题描述

我第一次为学校项目弄清楚PL / sql,我必须编写一个带有布尔函数的程序包,该函数带有一个用户ID和一个密码,并检查该用户是否具有该密码。这是包装主体的相关部分。

create package body user_management as
    -- more functions
    function check_password(
        id in users.id%type,password in varchar
    ) return boolean is
        valid number;
    begin
        select ( -- Error occurs here
            case when exists (
                select * from users u
                where (u.username = id)
                and (hash_password(password) = u.password)
            ) then 1 else 0 end
        ) into valid from dual;

        if valid = 1 then
            return true;
        else
            return false;
        end if;
    end;
    -- more procedures
end user_management;

但是,每当我尝试调用函数时,都会在select语句的开头出现错误“无效编号”。我已经用谷歌搜索了这个错误,所有结果都表明,如果无法将字符串转换为数字,则会发生此错误。但是我不认为我在这里这样做过。当我的选择查询选择一个count(*)而不是像现在这样使用案例时,发生了相同的错误

为什么我看到此错误,该如何解决?任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)