问题应该不在这个存储过程,请问数据表的触发器/索引什么的情况@error_2 你没有给赋值啊,永远回滚哦

解决方案 »

  1.   

    --试试
    create procedure dbo.sq_delete_paymoney
    @as_zfzt varchar(15),  --支付状态
    @as_fhzt varchar(15),  --订单状态
    @as_ddh varchar(30),   --订单号
    @al_customerid integer,  --客户编号
    @ade_amt decimal,  --变化金额
    @al_item int, --来款序号
    @as_return char(1) output  
    as  
     --来款信息删除处理
    declare @err_1 int,@error_2 int,@error_3 int,@error_4 int  
    SET XACT_ABORT
    begin tran  
    --删除当前记录
    delete sale_pre_accepted_item where item =@al_item and sequ_order=@as_ddh;
    select @error_1 = @@error
    --更新订单表的状态
    update order_simple set zfzt =@as_zfzt,fhzt =@as_fhzt where ddh=@as_ddh;  
    select @error_3 = @@error
    --更新客户表的余额数   
    update btoc_personal_member set Total_balance = Total_balance - @ade_amt where khbh =@al_customerid;  
    select @error_4 = @@error  
    if @error_1 =0 and @error_2 =0 and @error_3 =0 and @error_4 =0
    begin --成功  
    set @as_return ='1'  
    commit tran  
    end   
    else  --失败  
    set @as_return ='0'  
    end 
    go
      

  2.   

    从来没用过 SET XACT_ABORT。
    从来没用过 begin tran  和 commit tran 。呵呵,新鲜吗?我很难得见到阻塞的场面。