решено Забыли "Вставить" перед "или обновить" в триггере.
create or replace trigger biufer_bankkund
before insert or update on bankkund
for each row
begin
if NOT LENGTH (:NEW.PASSWD) = 6 then
raise_application_error
(-20001,'För låg ny lön!');
end if;
end;
Поэтому я создал триггер, который должен поддерживать пароли, содержащие только 6 букв.
Я предполагаю, что это неверный триггер, как я сделал Select * from bankkund и в нем были данные с паролем, состоящим всего из 3 букв.
create or replace trigger biufer_bankkund
before update on bankkund
for each row
begin
if NOT LENGTH (:NEW.PASSWD) = 6 then
raise_application_error
(-20001,'För låg ny lön!');
end if;
end;
Затем процедура спараметры PNR, FNAMN, ENAMN, PASSWD.
create or replace procedure do_bankkund(
p_pnr in bankkund.pnr%type,
p_fnamn in bankkund.fnamn%type,
p_enamn in bankkund.enamn%type,
p_passwd in bankkund.passwd%type)
is
begin
insert into bankkund(pnr,fnamn,enamn,passwd)
values(p_pnr,p_fnamn,p_enamn,p_passwd);
end;
/
Все прошло хорошо, но выполнилось и триггерное тестирование, чтобы проверить, вернет ли меня больше / меньше 6 букв в PASSWD, вернет ли мне ошибку с «текстом ошибки»).Но я получил только «Неверное заявление»
Кто-нибудь?Спасибо
Triggertest = EXEC do_bankkund('691124-4478','Leena','Kvist','qwe');