Oracle Trigger PLS 00103

时间:2016-12-11 21:49:38

标签: oracle

我是PL / SQL和DB对象的新手。我根据条件编写了一个插入后触发器但是遇到了PLS 00103错误;请帮忙。

以下是我的触发器脚本

CREATE TRIGGER trigger1 AFTER INSERT
    ON Table1
   FOR EACH ROW
 when (new.upper(Table1.column1)='ABC')
Declare
  ITEM_CODE table2.ITEM_CODE%TYPE;
BEGIN
  ITEM_CODE := :new.ITEM_CODE;

  INSERT INTO table2( PK,ITEM_CODE,EVENT_NUMBER)
    VALUES(EVENT_NUMBER_SEQ.NEXTVAL, ITEM_CODE,EVENT_NUMBER_SEQ.NEXTVAL);        
END;

我正在通过Toad执行此脚本。

先谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于:when (new.upper(Table1.column1)='ABC')应为(when upper(new.column1) ='ABC')
此外,您不需要声明变量仅分配值。只需直接使用价值。

CREATE TRIGGER trigger1 AFTER INSERT
    ON Table1
   FOR EACH ROW
when (upper(new.column1) ='ABC')`
BEGIN
--  IF (upper(:new..column1) ='ABC') THEN
  INSERT INTO table2( PK,ITEM_CODE,EVENT_NUMBER)
    VALUES(EVENT_NUMBER_SEQ.NEXTVAL, :new.ITEM_CODE,EVENT_NUMBER_SEQ.NEXTVAL);   
--END IF;     
END;