案例银行转账存储过程

Posted fanqisoft

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了案例银行转账存储过程相关的知识,希望对你有一定的参考价值。

 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

 

以上是关于案例银行转账存储过程的主要内容,如果未能解决你的问题,请参考以下文章

[hadoop3.x]银行海量转账数据分层案例

transaction事务案例--银行转账

手写实现自定义简易版Spring (实现IoC 和 AOP)

手写实现自定义简易版Spring (实现IoC 和 AOP)

阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理

事务——银行转账