zoukankan      html  css  js  c++  java
  • Sql生成不重复的数字

    -- =============================================
    -- Author:TUZI
    -- Create date: 2016.4.18
    -- Description:生成活动邀约码(活动编码+Code是唯一)
    
    /*
     exec sp_generateInvitecode  
     @CampaignCode='test' ,@Length=10,@Quantity=100000
     
    */
    
    -- =============================================
    ALTER PROCEDURE sp_generateInvitecode(@CampaignCode nvarchar(50)
                                          ,--所属活动编码
                                           @Length int
                                          ,--Code的长度
                                           @Quantity int--Code的数量
    )
    AS
    BEGIN
        CREATE TABLE #t(Code nvarchar(50));
        CREATE UNIQUE INDEX idx_union_code ON #t(Code)
    
        DECLARE @batchNum nvarchar(50);
        SET @batchNum = REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(nvarchar(19),GETDATE(),121),' ',''),'-',''),':',''),'.','')
        --如果活动进行中,需要继续生成邀请码,就得排除已经存在于表中的码
    
        SELECT Code INTO #existsCode
          FROM  XXX
          WHERE CampaignCode = @CampaignCode
    
        DECLARE @runQ int = 0;
        WHILE @runQ < @Quantity
            BEGIN
                INSERT INTO #t
                SELECT TOP 10000 LEFT(CAST(LEFT('10000000000',@Length)AS bigint) + ABS(CHECKSUM(NEWID())),@Length)
                  FROM syscolumns c1,syscolumns c2;
    
                DELETE #t
                WHERE Code IN(SELECT Code
                                FROM #existsCode);
                SELECT @runQ = COUNT(DISTINCT Code)
                  FROM #t;
            END
    
        INSERT INTO  XXX(CampaignCode
                                ,Code
                                ,BatchNum
                                ,createTime)
        SELECT TOP (@Quantity)@CampaignCode
                             ,Code
                             ,@batchNum
                             ,GETDATE()
          FROM #t
        DROP TABLE #t;
    END
    GO
    

      

  • 相关阅读:
    制作一个html中闪动的title 来提示消息
    Unicode与 utf8的互相转换
    程序员找女友的类
    使用php将数组转为XML
    自己动手画一个HTML5的按钮
    浏览器推通知给桌面
    如何使用定时任务
    封装之property,多态,鸭子类型,classmethod与staticmethod
    面向对象
    继承与派生
  • 原文地址:https://www.cnblogs.com/zjflove/p/5411591.html
Copyright © 2011-2022 走看看