Triggertest,无效语句

时间:2018-10-10 21:21:13

标签: sql oracle

已解决在触发器的“或更新”之前忘记了“插入”。

 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');

0 个答案:

没有答案