2015-10-19 64 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