2014-10-08 5 views
-1

Я хотел бы знать, как использовать другую таблицу для аутентификации. Как видите, у меня есть таблица с именем «vdv_medewerker», эта таблица содержит два столбца, -gebruikersnaam- & -wachtwoord-. Эти поля проверяются при входе в систему, и это работает.Apex Oracle пользовательский сценарий регистрации

Теперь, что я хотел бы сделать, я хотел бы, чтобы этот аутентификационный скрипт использовал значения из другой таблицы с именем 'vdv_klant', в эту таблицу также входит -gebruikersnaam- & -wachtwoord- column.

Я пробовал найти решение в Интернете, но мне это не удалось.

CREATE OR REPLACE FUNCTION 
    custom_inlog(p_username IN VARCHAR2, p_password IN VARCHAR2) 
RETURN BOOLEAN 
AS 
    v_gebruikersnaam varchar2(30); 
    v_wachtwoord varchar2(30); 
BEGIN 
    SELECT gebruikersnaam, wachtwoord 
    INTO v_gebruikersnaam, v_wachtwoord 
    FROM vdv_medewerker 
    WHERE UPPER(gebruikersnaam) = UPPER(p_username) 
    AND wachtwoord = p_password; 

    RETURN TRUE; 
EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
    RETURN FALSE; 
END;​ 

ответ

2

Возможно, предложенная вами схема проверки подлинности APEX для вызова вашей функции выше? Таким образом, вы можете просто изменить свою функцию, чтобы посмотреть на новую таблице, или вы можете создать новую функцию, основанную на новой таблице и изменить схему аутентификации APEX для вызова, что вместо старого:

enter image description here

+0

Возможно, я был неясно, но мне нужен сценарий аутентификации, в котором вы можете использовать две таблицы. Теперь вы видите пользовательский скрипт, созданный для схемы аутентификации n. – Jeremy

+0

Итак, просто напишите, какой SQL вы хотите внутри этой функции. –

+0

Это моя точка зрения, я не знаю, как написать сценарий, который позволяет мне использовать две таблицы вместо одной для аутентификации. – Jeremy

1

Чтобы дать ответ, прочитав комментарии, которые вы дали в то же время, здесь есть рабочая версия для кода:

CREATE OR REPLACE FUNCTION 
    custom_inlog(p_username IN VARCHAR2, p_password IN VARCHAR2) 
RETURN BOOLEAN 
AS 
    v_gebruikersnaam varchar2(30); 
    v_wachtwoord varchar2(30); 
BEGIN 
    SELECT gebruikersnaam, wachtwoord 
    INTO v_gebruikersnaam, v_wachtwoord 
    FROM (
    SELECT gebruikersnaam, wachtwoord FROM vdv_medewerker 
    UNION 
    SELECT gebruikersnaam, wachtwoord FROM vdv_klant 
    ) 
    WHERE UPPER(gebruikersnaam) = UPPER(p_username) 
    AND wachtwoord = p_password; 
RETURN TRUE; 
EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
    RETURN FALSE; 
END;​ 

Но в долгосрочных перспективах я хотел бы предложить использовать predfined вида и imrpove структуры базы данных в будущем ,