EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句???

这是我写的一个存储过程出错了,好像是少提交了一次事务,请牛人门帮我看看!!
[48 byte] By [hanxingyidian] at [2008-1-9]
# 1
alter proc CSMS_BMC_BatchOut_Check_RReturn
@IMEI nvarchar(800), --发货IMEI
@BatchNo nvarchar(50),
@IODate DateTime,
@IOMan nvarchar(50),
@BatchProductId int,
@BatchProductNo nvarchar(50),
@BatchCDANo nvarchar(50),
@BatchCDAId int,
@GoodsQty int,
@AssignType varchar(20),
@FreightCompany varchar(50),
@ReceiveCompany varchar(50),
@ReceiveCityId int,
@ReceiveCityName varchar(20),
@ReceiveAddress varchar(100),
@ReceiveMan varchar(20),
@ReceiveTel varchar(20),
@StoreroomId int,
@StoreroomName varchar(50)
----------------------------------------@GoodsCode nvarchar(50)
as
SET XACT_Abort ON
Begin TRAN BatchNo

declare @split1 varchar(10) --数据分隔符
set @split1=','

DECLARE @splitlen1 int
SET @splitlen1=LEN(@split1+'a')-2

declare @Batchidss int
declare @GoodsItemid int
declare @StockId int
declare @Count int

WHILE CHARINDEX(@split1,@IMEI)>0
begin
--------------------------------------------------------------------------------------
begin
insert into CSMS_BMC_BatchOut_Head values(@BatchNo,@FreightCompany,@ReceiveCompany,@ReceiveCityId,@ReceiveCityName,@ReceiveAddress,@ReceiveMan,@ReceiveTel,@IOMan,@IODate,1) --@IOMan 出库人 @IODate 出库时间
set @Batchidss = SCOPE_IDENTITY()
if @@error > 0 goto Terminate
end
---------------------------------------------------------------------------------------
begin
update CSMS_BMC_BatchOut_List set IsBatch=1,BatchId=@Batchidss
where BatchProductId = @BatchProductId and BatchCDAId=@BatchCDAId and IMEIOUT=LEFT(@IMEI,CHARINDEX(@split1,@IMEI)-1)
if @@error > 0 goto Terminate
end
---------------------------------------------------------------------------------------
if (@AssignType <> '退回') --不走库存
begin
----------------------------------------------------------------------------------------
begin
insert into CSMS_BMC_Stock_Head(IOOrder,IOType,IODate,IOMan,IsStockOut,StoreroomId ,StoreroomName) values(@BatchNo,4,@IODate,@IOMan,1,@StoreroomId ,@StoreroomName)
set @StockId = @@IDENTITY
insert into CSMS_BMC_Stock_List(StockId,ProductId,ProductNo,CDAId,CDANO,IMEI,GoodsQty) values(@StockId,@BatchProductId,@BatchProductNo,@BatchCDAId,@BatchCDANo,LEFT(@IMEI,CHARINDEX(@split1,@IMEI)-1),@GoodsQty)
if @@error > 0 goto Terminate
end
--------------------------------------------------------------------------------------------
begin
select @GoodsItemid=GoodsItemid from CSMS_BMC_Stock_IMEI where IMEI=LEFT(@IMEI,CHARINDEX(@split1,@IMEI)-1)
if @@error > 0 goto Terminate
end
--------------------------------------------------------------------------------------------
begin
select @Count=Count(1) from CSMS_BMC_Stock where StoreroomId=@StoreroomId and ProductId=@BatchProductId and CDAId = @BatchCDAId and GoodsItemid = @GoodsItemid
if @Count>0
begin
Update CSMS_BMC_Stock set GoodsQty = GoodsQty-@GoodsQty where StoreroomId=@StoreroomId and ProductId=@BatchProductId and CDAId = @BatchCDAId and GoodsItemid = @GoodsItemid
if @@error > 0 goto Terminate
end
else
begin
return 0
end
end
--------------------------------------------------------------------------------------------
begin
delete CSMS_BMC_Stock_IMEI where IMEI=LEFT(@IMEI,CHARINDEX(@split1,@IMEI)-1)
if @@error > 0 goto Terminate
end
---------------------------------------------------------------------------------------------
end --退回

-----------------------------------------------------------------------------------------
begin
insert into CSMS_BMC_Stock_log(IOOrder,OptionDate,StockType,StoreroomName,IMEI,ProductId,ProductNo,CDAId,CDANO,GoodsQty,GoodsItemid) values(@BatchNo,@IODate,7,@StoreroomName,LEFT(@IMEI,CHARINDEX(@split1,@IMEI)-1),@BatchProductId,@BatchProductNo,@BatchCDAId,@BatchCDANo,@GoodsQty,@GoodsItemid)
if @@error > 0 goto Terminate
end
--------------------------------------------------------------------------------------------------
SET @IMEI=STUFF(@IMEI,1,CHARINDEX(@split1,@IMEI)+@splitlen1,'')
if @@error > 0 goto Terminate

end

if @@error > 0
begin
Terminate:
rollback TRAN BatchNo
end
else
begin
Commit TRAN BatchNo
end





hanxingyidian at 2007-10-29 > top of Msdn China Tech,Web,其他...
# 2
没看出来