sql 批量添加 的存储过程

本文介绍了一个用于批量生成充值卡信息的高效存储过程,该过程能够灵活生成数千张不同面额、批号和有效期限的充值卡,并确保每个卡号的唯一性,以减轻服务器压力并提高效率。

项目需求:批量生成充值卡信息,每次生成的充值卡数量不等,但是都在几千张以上

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

通常大批量向数据库添加数据时,考虑到服务器的压力,程序的效率,通常都用存储过程来解决

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值