2015-10-19 65 views
-1

我一直坚持这个问题几天,不知道为什么这是编译有错误。错误缺失;在线“:NEW.desc:= concat(:NEW.desc,'Paul dollar');”,任何人都可以看到我要去哪里错了吗?甚至将我指向正确的方向将是非常棒的。触发器显示缺少问题;

CREATE TRIGGER trig_name 
before INSERT ON table_name for each row 
BEGIN 
    IF(:NEW.name= 'John') THEN 
     :NEW.bank_bal := :NEW.bank_bal - .10; 
     :NEW.desc:= concat(:NEW.desc, 'John ten'); 
    ENDIF; 
    IF(:NEW.name= 'Jane') THEN 
     :NEW.bank_bal := :NEW.bank_bal - .20; 
     :NEW.desc:= concat(:NEW.desc, 'Jane twenty'); 
    ENDIF; 
    IF (:NEW.name= 'Ron') THEN 
     :NEW.bank_bal := :NEW.bank_bal - .20; 
     :NEW.desc:= concat(:NEW.desc, 'Ron twenty'); 
    ENDIF; 
    IF (:NEW.name= 'Paul') THEN 
     :NEW.bank_bal := :NEW.bank_bal - 1; 
     :NEW.desc:= concat(:NEW.desc, 'Paul dollar'); 
    ENDIF;  
END; 
/
+0

'DESC'是SQL关键字和Oracle保留字。你应该把这个专栏命名为别的。 –

+0

您是否使用**双引号**创建了**引用标识**的“DESC”列?如果是,那么每次引用列名称时都必须使用双引号amrk。 –

回答

4

ENDIF;

在Oracle它不是一个字

IF condition THEN 
    {...statements to execute when condition is TRUE...} 
END IF; 
+0

谢谢谢谢谢谢!你已经保存了我的头发的其余部分。 :) – Josh123