当前位置: 代码迷 >> Sql Server >> 【这个异常怎么处理?】EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 2
  详细解决方案

【这个异常怎么处理?】EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 2

热度:804   发布时间:2016-04-24 22:52:39.0
【这个错误怎么办?】EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 2
我的写了sql存储过程,出现这个错误,是怎么回事?麻烦大神给可能下!本人先谢了!
这个是报错的那段代码,应该怎么改呢?

nextinsert:  
--插入月结主表对应数据   
insert into dbo.t_StockStorage
        ( c_ID ,
          c_Type ,
          c_JigouID ,
          c_Month ,
          c_StaffID ,
          c_Ctime ,
          c_Remark
        )
VALUES  ( @storid, -- c_ID - nvarchar(50)
          '无毛绒' , -- c_Type - nvarchar(50)
          @JigouID , -- c_JigouID - nvarchar(50)
          @yjtime, -- c_Month - datetime
          @staffid , -- c_StaffID - nvarchar(50)
          @createtime , -- c_Ctime - datetime
          @remark  -- c_Remark - ntext
        )
--获取插入到月结主表最新的主键id   
select @storageId = scope_identity()  
  
/*计算库存月结数据逻辑SQL语句,可以利用临时表或with cte的用法,下文以cte为主。*/  
  
--向月结子表插入数据   
--insert into StockStorageDetail  
--select @storageId,productid,quantity  
--from cte 


IF EXISTS(SELECT 1 FROM dbo.t_StockStorage WHERE c_JigouID=@JigouID)
 /*第一种情况:从未做过月结*/
BEGIN
SELECT * INTO #t_inv FROM dbo.t_CashmereInventory WHERE c_Pihao IN (SELECT c_Pihao FROM dbo.v_CashmereInBodyDetails WHERE c_time<=@yjtime AND c_jigouID=@JigouID AND IsAccount=1)
UPDATE #t_inv SET c_Inventory=0  --将数据归零准备重新计算
DECLARE yb_ph CURSOR FOR 
SELECT c_Pihao,c_ChangduID,c_PositionID FROM  #t_inv WHERE c_JiGouID=@JigouID;
SELECT @count = count(*) FROM  #t_inv WHERE c_JiGouID=@jigouid;
OPEN yb_ph
WHILE @count >0 AND @@FETCH_STATUS=0
  
   BEGIN
    FETCH NEXT FROM yb_ph INTO @pihao,@changdu,@kuwei
    /*先取入库数据进行运算*/
    SELECT @rksj =c_Weight FROM dbo.v_CashmereInBodyDetails WHERE c_Pihao=@pihao AND LengthID=@changdu AND c_PositionID=@kuwei AND c_jigouID=@JigouID
    UPDATE #t_inv SET c_Inventory=c_Inventory+@rksj WHERE c_Pihao=@pihao AND c_ChangduID=@changdu AND c_PositionID=@kuwei AND c_jigouID=@JigouID
    /*再取出库数据进行运算*/
    SELECT @cksj =c_Weight FROM dbo.v_CashmereOutDetails WHERE c_Pihao=@pihao AND LenthID=@changdu AND c_PositionID=@kuwei AND c_jigouID=@JigouID
    UPDATE #t_inv SET c_Inventory=c_Inventory-@cksj WHERE c_Pihao=@pihao AND c_ChangduID=@changdu AND c_PositionID=@kuwei AND c_jigouID=@JigouID
  相关解决方案