未知" SP2-0552:绑定变量"新"没有宣布"触发器上的消息

时间:2016-07-25 19:11:34

标签: oracle plsql triggers toad

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

    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窗口中运行它时,我得到了这一行:

SP2-0552: Bind variable "NEW" not declared

为什么我得到这个? 感谢

1 个答案:

答案 0 :(得分:3)

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

您可以在begin之前删除空白行,也可以在开始之前执行set sqlblanklines on