在存储过程中添加事务

--存在就删除

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[NAME]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ProcName]
GO

--还有一种删除的写法

IF EXISTS(SELECT * FROM sysobjects WHERE type='p' AND NAME='ProcName')
BEGIN
    DROP PROC ProcName
END
go

 

--创建一个存储过程

CREATE PROCEDURE ProcName
    
AS
BEGIN
       

BEGIN TRY
        DECLARE @TranFlag INT --事务标志 0:新建事务 1:保存已经存在事务点
        IF @@TRANCOUNT = 0 --事务个数为0,创建新事务
        BEGIN
            BEGIN TRAN CurrTran
            SET @TranFlag = 0
        END
        ELSE --已经存在事务
            SET @TranFlag = 1
        SAVE TRAN CurrTran --保存事务点,提交或回滚时从该事务点开始。
        
        ------------------------------
        --进行相关操作。

 


        ------------------------------
        
        IF @TranFlag = 0 --新建事务时才进行提交。
            COMMIT TRAN CurrTran
    END TRY
    BEGIN CATCH
            PRINT ERROR_MESSAGE() --打印一下错误的消息文本
            
            IF @TranFlag = 0
                BEGIN
                --回滚整个事务
                    ROLLBACK TRAN
                END
            ELSE
                BEGIN
                --回滚当前事务点
                    ROLLBACK TRAN CurrTran
                END
   END CATCH

END
GO

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值