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)
在SQLPlus中,使用WHENEVER命令控制发生错误时的行为.
WHERVER SQLERROR EXIT FAILURE ROLLBACK在我们的脚本中是相当标准的.
在SQLPlus提示符下键入HELP WHENEVER以获取更多信息.
| 归档时间: |
|
| 查看次数: |
3887 次 |
| 最近记录: |