项目需求:批量生成充值卡信息,每次生成的充值卡数量不等,但是都在几千张以上
create PROCEDURE [dbo].[BatchAddCard]
@CodeMoney money, --面额
@LotNum varchar(4), --批号
@ValidDate DateTime, --有效期
@CardMin int, --起始数字
@CardCount int --需要生成的数量
AS
declare @MyCounter int, --循环计数器
@CodePwd varchar(12), --充值卡密码
@CodeNum varchar(9), --充值卡号码
@xhPwd varchar(50), --8位密码
@rowInt int, --密码重复行数
@CardMinStr varchar(5),
@v2 varchar(1),
@result int --判断标志
set @MyCounter = 0
set @v2 = 0
while(@MyCounter<@CardCount)
BEGIN
set @CardMinStr = @CardMin
set @CodeNum = @LotNum
while((len(@CodeNum)+len(@CardMin))<9)
Begin
set @CodeNum = @CodeNum+@v2
End
set @CodeNum = @CodeNum+@CardMinStr
set @result=0
while(@result=0)
Begin
select @xhPwd = cast( floor(rand()*100000000) as int)
set @CodePwd = @LotNum+@xhPwd
select @rowInt = count(*) from Card_CardInfo where CodePwd=@Codepwd
if(len(@xhPwd)=8 AND @rowInt=0)
Begin
set @result=1
End
End
insert into Card_CardInfo(CodeNum,CodePwd,CodeMoney,LotNum,ValidDate,Status,FIsDel )
values(@CodeNum,@CodePwd,@CodeMoney,@LotNum,@ValidDate,0,0)
set @MyCounter=@MyCounter+1
set @CardMin = @CardMin+1
END
通常大批量向数据库添加数据时,考虑到服务器的压力,程序的效率,通常都用存储过程来解决
本文介绍了一个用于批量生成充值卡信息的高效存储过程,该过程能够灵活生成数千张不同面额、批号和有效期限的充值卡,并确保每个卡号的唯一性,以减轻服务器压力并提高效率。

被折叠的 条评论
为什么被折叠?



