Oracle SQL Developer:运行脚本,出错时继续
Posted
技术标签:
【中文标题】Oracle SQL Developer:运行脚本,出错时继续【英文标题】:Oracle SQL Developer: run script, continue on error 【发布时间】:2020-09-02 10:28:18 【问题描述】:我正在使用 SQL Developer 20.2 为 Oracle 12c 数据库更新运行批处理脚本。我将脚本文件拖放到编辑器窗口中,然后单击“运行脚本(F5)”按钮。由于某种原因,如果脚本遇到错误(DDL 语句 - 没有显式抛出 PL/SQL 函数),程序就会停止。
例子:
drop sequence my_seq; -- sequence may not exist yet
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
drop
语句可能会遇到错误,因为该序列不存在。 SQL*Plus 会忽略该错误并继续运行脚本,但 SQL Developer 会停止执行,从而导致补丁更新不完整。
我能做什么?
【问题讨论】:
【参考方案1】:SqlDeveloper 默认在发现错误时停止。您可以使用以下方法更改该行为:
whenever sqlerror continue;
drop sequence my_seq; -- sequence may not exist yet, in case of error continue
-- then we want to stop in error
whenever sqlerror exit failure;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
例子
解释
whenever sqlerror continue
指示脚本继续,无论发生什么错误
whenever sqlerror exit failure
指示脚本在出错时停止并退出执行。
参考可用的命令和选项
whenever sqlerror
【讨论】:
如果您能为未来的用户添加这两行的解释会更好。 @AnkitBajpai ,完成,甚至我也包含了文档本身的链接;)【参考方案2】:那不应该发生。默认情况下,SQL Developer 会运行编辑器的全部内容或您在按 F5 时选择的任何内容。
drop sequence my_seq;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
F5
您可以看到 drop 失败,但它继续到 CREATE。这一切都在一个'去'
【讨论】:
我相信旧版本也是如此。这就是为什么我开发这样的代码并且从未遇到问题的原因。也许还有一个设定。 Roberto Hernandez 的解决方案有效。 老了,也许是十年前...也许他的 login.sql 中有一些东西,每当 sqlerror 退出时就会设置,这是我最好的猜测以上是关于Oracle SQL Developer:运行脚本,出错时继续的主要内容,如果未能解决你的问题,请参考以下文章
在 Oracle SQL Developer 中恢复未保存的 SQL 查询脚本
Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
Oracle PL/SQL Developer集成TFS进行团队脚本文件版本管理
在 PL/SQL Developer 中运行的日期查询显示时间,但在 Oracle SQL Developer 中不显示