为了在事务中包装存储过程,我添加了以下内容:
CREATE PROCEDURE [dbo].[P_ORD_InsertTextField]
//PARAMS
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
//STP BODY
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
END
GO有没有更短的方法来做同样的事情呢?这是一个巨大的代码块,用于“只是”处理事务..
发布于 2011-03-13 20:50:03
不,差不多就是这样了。
您可以将@ErrMsg处理隐藏在存储的proc或UDF之后,而不需要@ErrSeverity处理。通常是16,这是“用户定义的错误”
请在这里查看我的答案:Nested stored procedures containing TRY CATCH ROLLBACK pattern?
https://stackoverflow.com/questions/5289379
复制相似问题