最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间: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 @totalD
推荐度:
导读实用的银行转账存储过程和流水号生成存储过程:银行转账存储过程 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 @totalD


银行转账存储过程

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事务控制实现银行转账实例
  • 转账支票、现金支票日期大写对照表(数字大写)
  • 微信开发--企业转账到用户
  • 文档

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

    实用的银行转账存储过程和流水号生成存储过程:银行转账存储过程 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 @totalD
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top