一个存储过程中多个更新操作, 后面的更新操作出现异常,如果 不手动回滚 前面修改的数据是不会自动撤销的! BEGIN TRY BEGIN TRAN -- ..... COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN DECLARE @ErrorMessag NVARCHAR ( 255 ) SELECT @ErrorMessag = E
一个存储过程中多个更新操作,后面的更新操作出现异常,如果不手动回滚前面修改的数据是不会自动撤销的!
<span>BEGIN</span><span> TRY
</span><span>BEGIN</span> <span>TRAN</span>
<span>--</span><span> .....</span>
<span>COMMIT</span> <span>TRAN</span>
<span>END</span><span> TRY
</span><span>BEGIN</span><span> CATCH
</span><span>ROLLBACK</span> <span>TRAN</span>
<span>DECLARE</span> <span>@ErrorMessag</span> <span>NVARCHAR</span>(<span>255</span><span>)
</span><span>SELECT</span> <span>@ErrorMessag</span> <span>=</span><span> Error_message()
</span><span>RAISERROR</span> (<span>15600</span>,<span>-</span><span>1</span>,<span>-</span><span>1</span>,<span>@ErrorMessag</span><span>);
</span><span>END</span> CATCH
另参考: http://msdn.microsoft.com/zh-cn/library/ms178592.aspx
<span>BEGIN</span><span> TRY
</span><span>--</span><span> RAISERROR with severity 11-19 will cause execution to </span>
<span>--</span><span> jump to the CATCH block.</span>
<span>RAISERROR</span> (<span>'</span><span>Error raised in TRY block.</span><span>'</span>, <span>--</span><span> Message text.</span>
<span>16</span>, <span>--</span><span> Severity.</span>
<span>1</span> <span>--</span><span> State.</span>
<span> );
</span><span>END</span><span> TRY
</span><span>BEGIN</span><span> CATCH
</span><span>DECLARE</span> <span>@ErrorMessage</span> <span>NVARCHAR</span>(<span>4000</span><span>);
</span><span>DECLARE</span> <span>@ErrorSeverity</span> <span>INT</span><span>;
</span><span>DECLARE</span> <span>@ErrorState</span> <span>INT</span><span>;
</span><span>SELECT</span>
<span>@ErrorMessage</span> <span>=</span><span> ERROR_MESSAGE(),
</span><span>@ErrorSeverity</span> <span>=</span><span> ERROR_SEVERITY(),
</span><span>@ErrorState</span> <span>=</span><span> ERROR_STATE();
</span><span>--</span><span> Use RAISERROR inside the CATCH block to return error</span>
<span>--</span><span> information about the original error that caused</span>
<span>--</span><span> execution to jump to the CATCH block.</span>
<span>RAISERROR</span> (<span>@ErrorMessage</span>, <span>--</span><span> Message text.</span>
<span>@ErrorSeverity</span>, <span>--</span><span> Severity.</span>
<span>@ErrorState</span> <span>--</span><span> State.</span>
<span> );
</span><span>END</span> CATCH;
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号