视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实用的银行转账存储过程和流水号生成存储过程
2020-11-09 07:02:45 责编:小采
文档


银行转账存储过程

USE [BankInfor]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER 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 GetSerialNo
go
Create 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 SerialNo
select convert(varchar(6), getdate(), 12)+'000001'

您可能感兴趣的文章:

  • Android 高仿微信转账金钱输入框规则
  • python 实现网上商城,转账,存取款等功能的信用卡系统
  • Python实现信用卡系统(支持购物、转账、存取钱)
  • Python3连接MySQL(pymysql)模拟转账实现代码
  • 基于Python实现一个简单的银行转账操作
  • PHP+Mysql基于事务处理实现转账功能的方法
  • php利用事务处理转账问题
  • php+Mysqli利用事务处理转账问题实例
  • php+mysqli事务控制实现银行转账实例
  • 转账支票、现金支票日期大写对照表(数字大写)
  • 微信开发--企业转账到用户
  • 下载本文
    显示全文
    专题