码迷,mamicode.com
首页 > 其他好文 > 详细

案例银行转账存储过程

时间:2019-05-05 11:39:01      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:_id   ber   col   color   out   one   action   output   mit   

 1 if object_id(Nusp_transfer, NP) is not null
 2     drop proc usp_transfer
 3 GO
 4 create proc usp_transfer
 5 @from char(4),    ----转账人    
 6 @to char(4),    --收账人    
 7 @balance money,    --转账金额
 8 @resultNumber int output    --转账结果(1表示成功,2表示失败,3表示余额不足)
 9 as
10 begin
11     --1.判断转账人余额是否足够
12     declare @money money
13     select @money = balance from bank where cid = @from
14     if(@money - @balance >= 10)
15     begin
16         --开始转账
17         begin transaction --开始事务
18             declare @sum int = 0  --用于统计错误,初始值为0
19             --2.转账人扣钱
20             update bank set balance = balance - @balance where cid = @from
21             set @sum = @sum + @@error   -- 如果有错误,则错误累加
22             --3.收账人收钱
23             update bank set balance = balance + @balance where cid = @to
24             set @sum = @sum + @@error    --如果有错误,则错误累加
25             --4.判断是否执行成功,进行提交或回滚
26             if @sum <> 0
27             begin
28                 set @resultNumber = 2    --转账失败
29                 rollback    --事务回滚
30             end
31             else
32             begin
33                 set @resultNumber = 1    --转账成功
34                 commit    --事务提交
35             end
36     end
37     else
38     begin
39         set @resultNumber = 3    --余额不足
40     end
41 end
42 go

执行

1 declare @resultN int
2 exec usp_transfer @from = 0001,@to = 0002,@balance = 900,@resultNumber = @resultN output
3 print @resultN

 

案例银行转账存储过程

标签:_id   ber   col   color   out   one   action   output   mit   

原文地址:https://www.cnblogs.com/fanqisoft/p/10811948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!