Триггер - не может снять больше текущего баланса - неверная функция? - PullRequest
0 голосов
/ 12 октября 2018

Так как в заголовке написано, что я пытаюсь собрать триггер, убедившись, что вы не можете снять больше, чем при текущем балансе.

 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;
/

Цените любую помощь.

Обновление, получение ошибок: TRIGGER BIFER_UTTAG Строка / столбец: 2/2 PL / SQL:Оператор игнорируется. Строка / столбец: 2/5 PLS-00306: неверный номер или типы аргументов при вызове 'GET_SALDO'

Ответы [ 2 ]

0 голосов
/ 12 октября 2018
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; 
0 голосов
/ 12 октября 2018

Вам нужно передать номер счета в вызов функции, а затем выполнить сравнение -

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...