加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle脚本中的错误处理

发布时间:2020-12-12 13:15:19 所属栏目:百科 来源:网络整理
导读:我一直在尝试解决这个问题,我认为现在是时候寻求帮助了.我正在构建模式配置脚本,我想添加一些脚本输出和错误处理.这个想法是脚本输出窗口只显示没有所有噪音的关键信息. Create Temporary Error TableBegin Transaction-- begin work blockPrint "Doing some
我一直在尝试解决这个问题,我认为现在是时候寻求帮助了.我正在构建模式配置脚本,我想添加一些脚本输出和错误处理.这个想法是脚本输出窗口只显示没有所有噪音的关键信息.

Create Temporary Error Table
Begin Transaction

-- begin work block
Print "Doing some types of work"
-- do work here

If Error and Active Transactions > 0 Then Rollback
If Active Transactions = 0 Then Insert Error In Temp Error Table and Start Another Transaction
-- end work block

-- once all all work complete
If Active Transactions > 0 Then Commit Transactions

在SQL Server世界中,我通常会用Red Gate’s SQL Packager执行此操作,但它已经弄明白了(提示,提示Red Gate – 我们需要Oracle版本:)).有关从哪里开始使用Oracle获得类似内容的任何想法?

解决方法

在Oracle中,您可以定义事务边界 – 在完成后提交,并且每个语句都是原子的.

如果您正在使用SQL * Plus,并且如果出现任何问题,您根本不需要提交任何内容,那么您可以在SQL脚本中添加以下内容:

SET ECHO ON
SPOOL /some/path/to/logfile.log
WHENEVER SQLERROR EXIT SQL.CODE ROLLBACK

-- run your code or DML statements

COMMIT;
EXIT;

这将在第一次遇到错误时弹出,因此错误语句将位于日志文件的末尾.它还将回滚任何更改,因此只要没有任何COMMIT(或导致它们的语句,如CREATE,ALTER,DROP,GRANT或REVOKE),那么整个升级都是全有或全无.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读