触发器 - 无法提取超过当前余额 - 使用中的功能不正确?



正如标题所说,我试图组装一个触发器,以确保您不能提取超过当前余额的金额。

Translation;
Saldo = balance
Belopp = amount

Create or replace trigger bifer_uttag
before insert
on UTTAG
for each row
begin
IF get_saldo  (:new.belopp > :old.belopp)
Then 
raise_applicaton_error( -20001, 'snålt saldo!');
end if;
end;

但我得到:

所以我想它与我的函数(Get_saldo(我调用有关?

create or replace function get_saldo(
p_knr in kontotest.knr%type
)
return number                    
as
v_saldo number := 0 ;
begin
select sum( saldo) 
into v_saldo
from konto                    
where knr = p_knr ;
return v_saldo ;
end;
/

感谢任何帮助。

更新,获取错误:触发器BIFER_UTTAG行/列:2/2 PL/SQL:语句被忽略 行/列:2/5 PLS-00306:调用"GET_SALDO"时参数的数量或类型错误

CREATE OR replace TRIGGER bifer_uttag 
BEFORE INSERT ON uttag 
FOR EACH ROW 
BEGIN 
IF get_saldo(:new.knr) > :new.belopp THEN 
Raise_application_error(-20001, 'snålt saldo!'); 
END IF; 
END; 

您需要将帐号传递给函数调用,然后进行比较 -

Create or replace trigger bifer_uttag
before insert
on UTTAG
for each row
begin
IF get_saldo(:new.knr) > :new.belopp
Then 
raise_applicaton_error( -20001, snålt saldo!');
end if;
end;

最新更新