案例银行转账存储过程

复制代码
 1 if object_id(N'usp_transfer', N'P') 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

 

作者:奇

出处:https://www.cnblogs.com/fanqisoft/p/10811948.html

版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。

posted @   SpringCore  阅读(477)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示