Apex Oracle自定义登录脚本

Apex Oracle自定义登录脚本,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我想知道如何使用另一个表进行身份验证。 如您所见,我有一个名为“vdv_medewerker”的表,该表包含两列,-gebruikersnaam-&-wachtwoord-。这些字段在登录时进行验证,并且可以正常工作 现在我想做的是,我希望这个验证脚本使用另一个名为“vdv_klant”的表中的值,这个表还包括一个-gebruikersnaam-&-wachtwoord-列 我试图在网上找到解决方案,但没有成功 CREATE OR REPLACE FUNCTION custom_inl

我想知道如何使用另一个表进行身份验证。 如您所见,我有一个名为“vdv_medewerker”的表,该表包含两列,-gebruikersnaam-&-wachtwoord-。这些字段在登录时进行验证,并且可以正常工作

现在我想做的是,我希望这个验证脚本使用另一个名为“vdv_klant”的表中的值,这个表还包括一个-gebruikersnaam-&-wachtwoord-列

我试图在网上找到解决方案,但没有成功

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

假设您的APEX身份验证方案已设置为调用上述函数?因此,您可以只更改函数以查看新表,也可以基于新表创建一个新函数,并更改APEX身份验证方案以调用它,而不是旧的:


要在阅读您在此期间给出的评论后给出答案,以下是代码的工作版本:

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

但从长远来看,我建议使用预先定义的视图,并在将来修改数据库结构。

也许我不清楚,但我想要一个使用两个表登录的身份验证脚本。您现在看到的是一个为n身份验证方案定制的脚本。好吧,在该函数中编写您想要的SQL。这就是我的观点,我不知道如何编写一个脚本,它允许我使用两个表而不是一个表进行身份验证。@Jeremy,你现在并不比你先前问的问题更清楚,这个问题现在似乎已经被删除了。使用两个表而不是一个表是什么意思?@Jeremy,你需要解释如何使用这两个表-用户必须同时使用这两个表,还是只使用其中一个,或者。。。?无论如何,您需要做的很简单:函数应该做它需要做的任何事情来确定用户名和密码是否正确,如果正确,则返回TRUE,如果不正确,则返回FALSE。