日期:2014-05-18 浏览次数:20530 次
begin tran ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; else begin if (@isBackCard = 1) begin if(@type='0') begin ... ...--执行语句 select @ok = @@ROWCOUNT if @ok=0 rollback; end end end end end end end end if @@error > 0 rollback; else commit;
rollback; return; --return后就不会执行后面的代码了
------解决方案--------------------
begin tran ... ...--执行语句 if @@ROWCOUNT=0 begin rollback return end ... ...--执行语句 if @@ROWCOUNT=0 begin rollback return end ... ...--执行语句 if @@ROWCOUNT=0 begin rollback return end ... ...--执行语句 if @@ROWCOUNT=0 begin rollback return end ... ...--执行语句 if (@isBackCard = 1) if(@type='0') begin ... ...--执行语句 if @@ROWCOUNT=0 begin rollback return end end if @@error > 0 rollback; else commit;
------解决方案--------------------
楼主的代码只是逻辑有点乱,不方便维护和修改.
至于执行和性能应该没问题.
------解决方案--------------------
我怎么感觉写这代码的人是按照面向过程的思路来写SQL的?
------解决方案--------------------
--我简单模拟一下 --先定义一个表变量 declare @t table(id int) begin tran insert into @t select 1 --执行语句1 if @@rowcount=0 rollback; else begin insert into @t select 2 --执行语句2 if @@rowcount=0 Rollback Tran; insert into @t select 3 --执行语句3 if @@rowcount=0 Rollback Tran; insert into @t select 4 where 1<>1 --执行语句4 if @@rowcount=0 Rollback Tran; insert into @t select 5 --执行语句5 if @@rowcount=0 Rollback Tran; insert into @t select 6 --执行语句6 if @@rowcount=0 Rollback Tran; declare @isB