PL / SQL:在触发器中忽略语句

时间:2014-12-11 19:12:50

标签: plsql

我对PLSQL错误消息感到困惑

返回以下错误:

Error at line 13: PL/SQL: Statement ignored

1. create or replace TRIGGER trg before insert on pacient for each row
2. declare
3. rr varchar(3);

它告诉我第13行有一个错误,但它显示第3行:(。任何想法如何定位这些消息?谢谢。

这是我的代码:

 create or replace TRIGGER trg before insert on pacient for each row
 declare
  rr varchar(3);
  mm varchar(3);
  dd varchar(3);
  abc varchar(4);
  x varchar(2);
begin
  rr:=substr (:new.num, 1, 2);
  mm:=substr (:new.num, 3, 2);
  dd:=substr (:new.num, 5, 2);
  abc:=substr (:new.num, 7, 3); 
  x:=substr (:new.num, 10, 1);
  if mod (to_number(rr || mm || dd || abc))<>to_number(x) then raise_application_error(-20500,'wrong    number');
  end if;   
end;

2 个答案:

答案 0 :(得分:1)

我注意到的一件事是Mod需要另一个参数。您需要指定要将数字除以哪个值以返回余数。

答案 1 :(得分:1)

MOD功能必须两个参数。

我想你想要实现的是这个(真的只是猜测):

  if mod (to_number(rr || mm || dd || abc),to_number(x)) != 0 then  
      raise_application_error(-20500,'wrong    number');
  end if;   

你知道MOD的作用吗?例如。 MOD(15,6)为3,MOD(18,6)为0。

也许你可以编辑你的问题,让我们知道这一切是什么。