代码中的自定义身份验证不起作用。你能帮我解决这个问题吗?
这是我使用的代码:
create or replace function "MY_AUTHENTICATION"
(p_username in VARCHAR2,
p_password in VARCHAR2)
return BOOLEAN
is
l_user sign_up.user_name%type := upper(p_username);
l_id sign_up.user_name%type;
l_hash sign_up.set_password%type;
begin
select user_name, set_password
into l_id, l_hash
from sign_up
where user_name = l_user and set_password = l_hash;
end;
和相同的过程,但是显示以下错误enter image description here
答案 0 :(得分:1)
NO_DATA_FOUND
表示您在表中找不到匹配的行。因此,请在EXCEPTION
处理部分进行处理。
顺便说一句,即使您没有遇到该错误,您也会遇到另一个错误:函数必须返回一些值;在任何情况下您都不会。
CREATE OR REPLACE FUNCTION MY_AUTHENTICATION (p_username IN VARCHAR2,
p_password IN VARCHAR2)
RETURN BOOLEAN
IS
l_user sign_up.user_name%TYPE := UPPER (p_username);
l_id sign_up.user_name%TYPE;
l_hash sign_up.set_password%TYPE;
BEGIN
SELECT user_name, set_password
INTO l_id, l_hash
FROM sign_up
WHERE user_name = l_user
AND set_password = p_password; -- not l_hash!
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN FALSE;
END;