微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer 存储过程的事务

 

 注意:在事务当中不能再开始事务

 ALTER PROCEDURE [dbo].[MyProcedure]         @Flag               AS      INT,                    @Column1            AS        VARCHAR(8),                 @Column2                AS        VARCHAR(50),             @Column3        AS        VARCHAR(50),             @Column4            AS        CHAR(10),                 @Column5            AS        tinyint,                 @Column6        AS        tinyint,                 @Column7        AS        NVARCHAR(20),             @Column8            AS        CHAR(2),                 @Column9            AS        NVARCHAR(50),             @O_RETURN            AS        INT    OUTPUT AS BEGIN     SET NOCOUNT ON      BEGIN TRAN--------------------------开始事务              UPDATE Table1           SET Column2 = @Column2             ,Column3 = @Column3         WHERE Column1 = @Column1         IF @@ERROR <> 0             GOTO errback        IF @Flag = 1         UPDATE Table2          SET Column2 = @Column2             ,Column3 = @Column3             ,Column4 =@Column4             ,Column5 =@Column5             ,Column6 =@Column6             ,Column7 = @Column7             ,Column8 = @Column8                 ,Column9 = @Column9         WHERE Column1 = @Column1      ELSE         UPDATE Table3          SET Column2 = @Column2             ,Column6 =@Column6         WHERE Column1 = @Column1         IF @@ERROR <> 0 ---------因为if else 当中语句只执行一个,所以判断放在外面             GOTO errback ----------转到执行错误的语句去;         UPDATE Table4         SET Column2 = @Column2         WHERE Column1 = @Column1         IF @@ERROR <> 0            GOTO errback            COMMIT TRAN   -- 提交事务         SET @O_RETURN = 0;--返回成功标志         RETURN  --必须 return 掉,否则会执行下面的 errback:当中的代码         errback: --处理错误             ROLLBACK TRAN --回滚事务             SET @O_RETURN= 1;             RETURN

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐