gpt4 book ai didi

oracle - Oracle 脚本中的错误处理

转载 作者:行者123 更新时间:2023-12-04 21:25:45 28 4
gpt4 key购买 nike

我已经尝试解决这个问题一段时间了,我认为是时候寻求帮助了。我正在构建一个架构配置脚本,我想添加一些脚本输出和错误处理。这个想法是脚本输出窗口只会向我显示关键消息而没有所有噪音。

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 s(或导致它们的语句,如 CREATE, ALTER, DROP, GRANTREVOKE ),则整个升级要么全有要么全无。

关于oracle - Oracle 脚本中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427513/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com