【发布时间】:2010-03-11 20:53:57
【问题描述】:
如何检测当前SCAN 状态并在更改后恢复?
相关脚本的摘录:
SET SCAN OFF
SET ECHO ON
SET SQLBLANKLINES ON
SET SCAN ON
UPDATE TABLE_NAME SET CREATED_BY = &&created_by;
SET SCAN OFF
问题是如果脚本没有第一行(SET SCAN OFF),那么提示用户的代码不应该在之后关闭SCAN 状态。伪代码解决方案:
-- The next line might not exist, or be "SET SCAN ON".
SET SCAN OFF
SET ECHO ON
SET SQLBLANKLINES ON
-- Remember if the scanning was on or off.
PUSH SCAN STATE
SET SCAN ON
UPDATE TABLE_NAME SET CREATED_BY = &&created_by;
-- Revert scanning to its former state.
POP SCAN STATE
PUSH SCAN STATE 行会记住状态,因此如果通过删除第一行来更改代码,由于对应的POP SCAN STATE,脚本的其余部分仍可按预期工作。
【问题讨论】:
-
您可以在顶部
SHOW SCAN并在必要时手动重置它。 -
@Jeffrey:我正在寻找自动化解决方案。
-
我收集到了,这就是我发表评论但没有回答的原因 - 我怀疑可能没有解决方案。
标签: sql oracle installation sql-update