日期:2014-05-18 浏览次数:20624 次
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