--创建 存取钱 存储过程
create procedure proc_takeMoney
@card char(19),--卡号
@m money,      --交易金额
@type char(4), --交易类型
@inputPass char(6)=''--输入的密码 
as
begin tran                                  --开始事务
declare @errorSum int--错误数的和
set     @errorSum=0
declare @balance money--交易前的余额
select  @balance=balance from cardInfo where cardID=@card--查询交易前的余额
declare @rightPass char(6)--正确的密码
select @rightPass=pass from cardInfo where cardID=@card--查询正确的密码
declare @newBalance money--交易后的余额
  if @type='存入'
    begin
  insert into transInfo(cardID,transType,transMOney)
values(@card,@type,@m)
  update cardInfo set balance=balance+@m where cardID=@card
  select @newBalance=balance from cardInfo where cardID=@card
  print @card+'余额为:'+convert(varchar(10),@newBalance)
    end
  if @type='支取'
    begin--支取开始
      if(@rightPass<>@inputPass)--密码是否正确
  begin
print'密码不正确'
 set @errorSum=@errorSum+@@error
print '错误号'+convert(varchar(8),@@error)
                  end
      if(@balance-@m<1)--是否余额不足
  begin 
print'余额不足'
set @errorSum=@errorSum+@@error
print '错误号'+convert(varchar(8),@@error)
  end
      if((@rightPass=@inputPass)and(@balance-@m>=1))---可以进行支取交易
  begin
insert into transInfo(cardID,transType,transMoney)
  values(@card,@type,@m)
set @errorSum=@errorSum+@@error
update cardInfo set balance=balance-@m where cardID=@card
set @errorSum=@errorSum+@@error
select @newBalance=balance from cardInfo where cardID=@card
set @errorSum=@errorSum+@@error
print @card+'余额为:'+convert(varchar(10),@newBalance)
  end
   end--支取完if @errorSum<>0
   begin
     print'交易失败'
     rollback transaction
   end
else
  begin
     print'交易成功'
     commit transaction
  end
go
exec proc_takeMoney '1010 3576 1234 5678','1','支取','123459'    --密码有误
--显示的结果是:
密码不正确
错误号0
交易成功
为什么错误号一直都是0啊 ?
我是新手,不知道为什么只可以发没有分的贴
您不能发这么多可用分 您无权发这么多的可用分
我的可用分是200 积分65