ORA-06550 PLS-00103:当遇到以下任何一种情况时,遇到符号“文件结束”:*& = - +; < />

时间:2015-03-10 20:42:10

标签: oracle oracle11g oracle-sqldeveloper

我在这里缺少什么?它标记了第5行第19列......分号必须保留。

CREATE OR REPLACE TRIGGER Patient_Audit_Trigger
  BEFORE DELETE OR UPDATE ON Patient
  FOR EACH ROW
DECLARE
       Operation VARCHAR(6);
BEGIN

    IF DELETING THEN 
      Operation := 'D';
    END IF;

    IF UPDATING THEN 
      Operation := 'U';
    END IF;

    INSERT INTO Patient_Audit (patNo, patName, patAddr, patDOB, changeTime, changeBy, ActionType)
    VALUES (:old.patNo, :old.patName, :old.patAddr, :old.patDOB, CURRENT_TIMESTAMP WITH TIME ZONE, USER, Operation);
END;
/

1 个答案:

答案 0 :(得分:2)

我试图编译你的触发器(首先我创建了Patient和Patient_Audit表),而且它无法编译的唯一原因是

  CURRENT_TIMESTAMP WITH TIME ZONE

应该是

  CURRENT_TIMESTAMP 

CURRENT_TIME标记已经有时区,与LOCALTIMESTAMP

不同

这个编译

CREATE OR REPLACE TRIGGER Patient_Audit_Trigger
BEFORE DELETE OR UPDATE ON Patient
 FOR EACH ROW
DECLARE
   Operation VARCHAR(6);
BEGIN

IF DELETING THEN 
  Operation := 'D';
END IF;

IF UPDATING THEN 
  Operation := 'U';
END IF;

INSERT INTO Patient_Audit (patNo, patName, patAddr, patDOB, changeTime, changeBy, ActionType)
 VALUES (:old.patNo, :old.patName, :old.patAddr, :old.patDOB,    current_timestamp, USER, Operation);
END;
/

(偏离主题:请注意,不鼓励使用VARCHAR,您应该使用VARCHAR2)