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