пользовательская аутентификация на странице входа oracle apex - PullRequest
0 голосов
/ 08 мая 2020

Пользовательская аутентификация в коде не работает. Не могли бы вы помочь мне это исправить?

Это код, который я использовал:

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;

и та же процедура, но показывает следующую ошибку введите описание изображения здесь

1 Ответ

1 голос
/ 08 мая 2020

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;
...