2014-11-14 145 views
0

我創建了一個函數,我認爲它是正確的,但我不知道如何在觸發器中調用它。我知道觸發是錯誤的,但多數民衆贊成我已經試過 功能:在觸發器中使用函數

create or replace function log_in(pass in varchar2, user in varchar2) 
return number 
is 
    match_count number; 
begin 
    select count(*) 
    into match_count 
    from Member 
    where username=user 
    and password=pass; 
    return match_count; 
end; 

觸發:

create or replace TRIGGER PASSWORDCHECK 
BEFORE INSERT OR UPDATE ON Login 
FOR EACH ROW 
DECLARE 
usern VARCHAR2(12); 
pass VARCHAR2(12); 
result number; 
BEGIN 
usern := :new.username; 
pass := :new.password; 
/*Select LOG_IN(pass,usern)INTO result From MEMBER Where usern = Username;*/ 
result := LOG_IN(pass,usern); 
If result = 1 THEN 
dbms_output.put_line('Login Succesful'); 
ElsIF result = 0 THEN 
dbms_output.put_line('Login Failed'); 
END IF; 
END; 
+1

什麼RDBMS是這個? – 2014-11-14 15:39:09

+0

對不起,它的SQL oracle即時通訊使用,我認爲這就是你要找的 – user3433399 2014-11-14 15:42:36

+0

你是否在調用觸發dbms_output?沒有什麼可以正常看到的。 – OldProgrammer 2014-11-14 15:52:09

回答

0

我假設所有登錄嘗試失敗呢?

USER是一個關鍵字,它標識當前模式:

SQL> select user from dual; 

USER 
------------------------------ 
REF 

由於這是不太可能的任何用戶都具有相同的名稱作爲模式的計數總是返回0。