alter procedure [dbo].[fin_providers]
  @provider_temp_id varchar (20),   --申请流水号(临时编号)(供应商申领材料款表)
  @sq_total_money decimal (10,5) , --申请总金额 (供应商申领材料款表)
  @R_f_id varchar (20), --实际上每条记录的编号
  @R_f_money decimal (10,5), --实际上每条记录申领金额
  @sq_money decimal(24,12),--每条记录剩余可申请金额
  @errorsum int output   --传出去的
  as      begin tran
         declare @err int , --异常数
                 @wheretable nvarchar(2), --修改到哪张表
                 @rowcount int --返回执行的条数
 set @err=0 
        begin
       ------------------
            insert into  Fin_provider_detail (F_p_id,Costid,[Money]) values (@provider_temp_id,@R_f_id ,@R_f_money)  --供应商申领材料款详细表
            set @rowcount=@@ROWCOUNT 
       --------------------
        end
 set @err=@err +@@error
        begin
       set @wheretable=( select SUBSTRING (@R_f_id,4,1))
        if @wheretable='A'
            begin
            update  Cost_material_after set Applylimit=@sq_money where Number=@R_f_id
            set @rowcount=@@ROWCOUNT
            set @err=@err +@@error
            end
        else if @wheretable='B'
            begin
            update  Cost_machine_after set Applylimit=@sq_money where Number=@R_f_id
           set @rowcount=@@ROWCOUNT
            set @err=@err +@@error
            end
        else if @wheretable='C'
            begin
            update  Cost_man_after set Applylimit=@sq_money where Number=@R_f_id
            set @rowcount=@@ROWCOUNT
            set @err=@err +@@error
            end
        else if @wheretable='D'
            begin
            update  Cost_plant_after set Applylimit=@sq_money where Number=@R_f_id
            set @rowcount=@@ROWCOUNT
            set @err=@err +@@error
            end
        else
            set @err=@err +@@error
     end
if @err <>0 or @rowcount=0
    begin
    set @errorsum=0
     rollback tran
     return 0
    end
else 
    begin
     set @errorsum=1 
    commit tran
    end 
该怎样解决呀!!!!!!!!!!!!!!在线等