案例银行转账存储过程
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
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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框架的用法!