2014-11-14 63 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。