触发器上的未知 "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
。
我的一个脚本中有这个触发器:
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
。