【发布时间】:2016-10-12 09:40:05
【问题描述】:
我在存储过程中有一个 SQL 事务,我想知道如何在事务成功提交或在任何时候失败的情况下返回成功消息,即。已回滚,我想在 MVC C# 的代码中使用该标志。
【问题讨论】:
标签: sql-server stored-procedures transactions
我在存储过程中有一个 SQL 事务,我想知道如何在事务成功提交或在任何时候失败的情况下返回成功消息,即。已回滚,我想在 MVC C# 的代码中使用该标志。
【问题讨论】:
标签: sql-server stored-procedures transactions
下面的代码可能会对你有所帮助,
BEGIN TRY
BEGIN TRANSACTION
-- sql update\delete statement goes here
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRANSACTION
PRINT 'Error ...'
END
SELECT
ERROR_NUMBER() AS Error#,
ERROR_MESSAGE() AS ErrorMsg
END CATCH
【讨论】:
OUTPUT 参数或结果集来返回成功/失败消息。对于结果集,您可以在示例中的 COMMIT 之后添加 SELECT 0 AS Error#, N'Success' AS ErrorMsg'。结果集应该具有相同的列名和数据类型以实现干净的接口。或者,您可以在CATCH 之后编写一个SELECT,以返回在TRY 或CATCH 块中分配的局部变量值,这样就只需要一个SELECT。
声明@success 位 = 1
开始交易 开始尝试 --这里是脚本的主要内容 结束尝试
开始捕捉 回滚事务 设置@成功 = 0 结束捕获
如果(@成功 = 1) 开始 提交事务 结束
【讨论】: