2014-10-08 46 views
-1

我想知道如何使用另一個表進行身份驗證。 正如你所看到的,我有一個名爲'vdv_medewerker'的表,這個表包含兩列--gebruikersnaam- & -wachtwoord-。這些字段在登錄時正在驗證中,並且可以正常工作。Apex Oracle自定義登錄腳本

現在我想要做的是,我想這個驗證腳本使用名爲「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;​ 

回答

2

假設您的APEX認證方案已經設置爲可以調用您的功能?所以,你可以只改變你的功能看新表,也可以創建基於新表的新功能和改變APEX認證方案來調用,而不是舊的:

enter image description here

+0

也許我不清楚,但我想要一個認證腳本使用兩個表登錄。你現在看到的是一個用於n認證方案的自定義腳本。 – Jeremy 2014-10-08 17:33:03

+0

好吧,只需在該函數內寫入任何你想要的SQL即可。 – 2014-10-08 17:58:25

+0

這是我的觀點,我不知道如何編寫一個腳本,它允許我使用兩個表而不是一個進行身份驗證。 – Jeremy 2014-10-08 18:00:46

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你的數據庫結構。