已解决在触发器的“或更新”之前忘记了“插入”。
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个字母的密码。
我的猜测是触发器与我一样不正确 选择* 来自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;
/
一切都很好,但是做了并触发了测试,以测试是否在PASSWD中输入了多于/少于6个字母会返回“错误文本”错误。)但是我只得到了“无效声明”
有人吗? 谢谢
Triggertest = EXEC do_bankkund('691124-4478','Leena','Kvist','qwe');