【发布时间】:2016-11-29 06:21:54
【问题描述】:
我的一个脚本中有这个触发器:
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 来执行脚本。 当我使用“作为脚本执行”按钮时,它工作正常。 但是当我在 SQLPlus 窗口中运行它时,我得到了这一行:
SP2-0552: Bind variable "NEW" not declared
任何想法为什么我得到这个? 谢谢
【问题讨论】:
-
:NEW是一个占位符。你只想要NEW(没有:),它指的是新行——这正是错误告诉你“绑定变量NEW未声明”的内容。 -
它是否在模拟默认的 SQL*Plus 空白行行为,也许?换句话说,它是否将块与
create分开 - 如果您删除begin之前的空白行,它是否有效? -
这是您的回答 Alex Poole。它是固定的。谢谢
-
什么是“SQLPlus 窗口”?这是 TOAD 的事情还是您的意思是实际的 Oracle SQLPlus?我可以在 SQLPlus 中创建带有空行的触发器,而无需
set sqlblanklines。
标签: oracle plsql triggers toad