首页
学习
活动
专区
圈层
工具
发布

tsql事务
EN

Stack Overflow用户
提问于 2011-03-13 20:38:50
回答 1查看 2.4K关注 0票数 5

为了在事务中包装存储过程,我添加了以下内容:

代码语言:javascript
复制
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

有没有更短的方法来做同样的事情呢?这是一个巨大的代码块,用于“只是”处理事务..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-13 20:50:03

不,差不多就是这样了。

您可以将@ErrMsg处理隐藏在存储的proc或UDF之后,而不需要@ErrSeverity处理。通常是16,这是“用户定义的错误”

请在这里查看我的答案:Nested stored procedures containing TRY CATCH ROLLBACK pattern?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5289379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档