触发器上的未知 "SP2-0552: Bind variable "新“未声明”消息

Unknown "SP2-0552: Bind variable "NEW" not declared" message on trigger

我的一个脚本中有这个触发器:

    CREATE OR REPLACE TRIGGER MS_DB.DB_TR_IncrementTrialNumber BEFORE INSERT 
ON MS_DB.DB_SUMMARY FOR EACH ROW

begin
    UPDATE MS_DB.DB_Summary SET MS_DB.DB_Summary.TimesGenerated =
        (Select COALESCE(MAX(TimesGenerated),0)+1 
         From MS_DB.DB_Summary
         Where MS_DB.DB_Summary.StepID = :NEW.StepID And 
         MS_DB.DB_Summary.ValidationID = :NEW.ValidationID AND  
         MS_DB.DB_Summary.SummaryDate = :NEW.SummaryDate);
    where MS_DB.DB_Summary.ID = :NEW.ID;
end;
/

我使用 TOAD 来执行脚本。 当我使用 'Execute as Script' 按钮时,它工作正常。 但是当我 运行 它在 SQLPlus window 中时,我得到了这一行:

SP2-0552: Bind variable "NEW" not declared

知道我为什么会收到这个吗? 谢谢

默认情况下SQL*Plus 将空行视为语句的结尾。第一行 create 永远不会执行。其余部分作为匿名块执行,并且由于它不再是触发器语句的一部分,因此无法识别 NEW

您可以删除 begin 之前的空行,或者在开始之前执行 set sqlblanklines on