首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

实用的银行转账存储过程和流水号生成存储过程

数据库操作教程 2022-09-23 17:56:20 转载来源: 网络整理/侵权必删

银行转账存储过程USE[BankInfor]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[Transfer](@inAccountint,@outAccountint,@amountfloat)asdeclare@totalDepositfloat;beginselect@totalDeposit=totalfromAccountwhereAccountNum=@outAccount;if@totalDepositisnullbeginrollback;print'转出账户不存在或账户中没有存款'return;endif@totalDeposit<@amountbeginrollback;print'余额不足,不能操作'return;endupdateAccountsettotal=total-@amountwhereAccountNum=@outAccount;updateAccountsettotal=total+@amountwhereAccountNum=@inAccount;print'转

银行转账存储过程

USE [BankInfor]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[Transfer](@inAccount int,@outAccount int,@amount float)as declare  @totalDeposit float;  begin  select @totalDeposit=total from Account where AccountNum=@outAccount;  if @totalDeposit is null  begin  rollback;  print'转出账户不存在或账户中没有存款'  return;  end  if @totalDeposit<@amount  begin  rollback;  print'余额不足,不能操作'  return;  end  update Account set total=total-@amount where AccountNum=@outAccount;  update Account set total=total+@amount where AccountNum=@inAccount;  print'转账成功!'  commit;  end;

流水生成存储过程

if exists(select 1 from sysobjects where id=OBJECT_ID('GetSerialNo') and xtype='p')drop proc GetSerialNogoCreate procedure [dbo].[GetSerialNo]  (    @sCode varchar(50)  )  as begin  Declare @sValue varchar(16),@dToday  datetime,@sQZ varchar(50) --这个代表前缀   Begin Tran     Begin Try     -- 锁定该条记录,好多人用lock去锁,起始这里只要执行一句update就可以了   --在同一个事物中,执行了update语句之后就会启动锁   Update SerialNo set sValue=sValue where sCode=@sCode    Select @sValue = sValue From SerialNo where sCode=@sCode    Select @sQZ = sQZ From SerialNo where sCode=@sCode     -- 因子表中没有记录,插入初始值     If @sValue is null     Begin     Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) + '000001')      Update SerialNo set sValue=@sValue where sCode=@sCode     end else     Begin        --因子表中没有记录      Select @dToday = substring(@sValue,1,6)      --如果日期相等,则加1      If @dToday = convert(varchar(6), getdate(), 12)       Select @sValue = convert(varchar(16), (convert(bigint, @sValue) + 1))      else       --如果日期不相等,则先赋值日期,流水号从1开始       Select @sValue = convert(bigint, convert(varchar(6), getdate(), 12) +'000001')     Update SerialNo set sValue =@sValue where sCode=@sCode     End   Select result = @sQZ+@sValue      Commit Tran    End Try    Begin Catch     Rollback Tran     Select result = 'Error'   End Catch  end select*from SerialNoselect convert(varchar(6), getdate(), 12)+'000001'

标签: 存储 过程 用的 银行 转账 流水 生成


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持