用户余额表a中有字段用户编码(code nvchar),余额(balance money)请用一个存储过程实现简单的转账过程,
如:用户编码为0001的用户转账100元给用户编码为0002的用户,(能否转账的前提条件是任何用户余额不能小于-20);
这个存储过程怎么写?

解决方案 »

  1.   

    create proc TransferMoney
    as
    @TransferCode nvarchar(36) --转账人code
    @TransferToCode nvarchar(36) --转给谁Code
    @MoneyNumber money --转多少钱
    begin
    if exists(select 1 from a where code=@TransferCode and  (balance-@MoneyNumber)>-20 ) 
    begin
    begin tran
      update a set balance=balance-@MoneyNumber where code=@TransferCode
      update a set balance=balance+@MoneyNumber where code=@TransferToCode 
    if @@error>0
    begin
    begin rollback tran --回滚
    end
    else
    begin
    begin commit tran --提交事务
    end 
    endend
    end
    end 没开环境,大致就是这样