注意:在事务当中不能再开始事务
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] 举报,一经查实,本站将立刻删除。