sql - 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 语句的开头收到错误“无效号码”。我用谷歌搜索了这个错误,所有结果都表明当无法将字符串转换为数字时会发生此错误。但我不认为我曾经在这里这样做过。当我的选择查询选择一个计数(*)而不是像我现在所做的那样使用案例时,发生了同样的错误。
为什么我会看到此错误,我该如何解决?任何帮助将不胜感激。