如何逐步了解回滚事务(可以在SQLServer中执行,但需要oracle解决方案)

Pet*_*ore 1 sql sql-server oracle transactions

这似乎应该是我已经知道的东西.我们需要在事务中运行一堆sql更新,如果其中一个失败则回滚.我们还想打印状态消息,因为我们将运行大量这些消息.如果我使用通用编程语言,这将很简单.但我试图找到一个团队成员可以使用的解决方案,这只是SQL.她过去使用下面的模式在MS SQL Server中完成了这项工作.Oracle是否有一个等效的简单模式?

DECLARE @ErrorVar INT;
BEGIN TRANSACTION;
UPDATE MyTable1 SET MyColumn1 = 'JSMITH' where MyColumn1 = 'JOHN';
SET @ErrorVar = @@ERROR;
UPDATE MyTable2 SET MyColumn2 = 'JSMITH' where MyColumn2 = 'JOHN';
SET @ErrorVar = @ErrorVar + @@ERROR;
UPDATE MyTable SET LoginID = 'JSMITH' where LoginID = 'JOHN';
SET @ErrorVar = @ErrorVar + @@ERROR;

IF @ErrorVar <> 0
   BEGIN
   ROLLBACK TRANSACTION;
   PRINT 'We had a problem with JSMITH and rolled back *****';
   END;
ELSE
   BEGIN
   COMMIT TRANSACTION;
   PRINT 'JSMITH Updated ok';
   END;
GO
Run Code Online (Sandbox Code Playgroud)

Dav*_*sta 7

在SQLPlus中,使用WHENEVER命令控制发生错误时的行为.

WHERVER SQLERROR EXIT FAILURE ROLLBACK在我们的脚本中是相当标准的.

在SQLPlus提示符下键入HELP WHENEVER以获取更多信息.