• SQLserver 存储过程生成任意进制/顺序流水号


    ALTER    PROCEDURE [dbo].[TentoSerial]
    @num int,
    @ret nvarchar(10) output
    AS

    declare @StringXL nvarchar(50)
    declare @CharXL nvarchar(10)
    declare @modnum int

    set @StringXL='0123456789ABCDEFGHJKLMNPRSTUVWXYZ'
    set @CharXL=''

    if @num>35936
        begin
            raiserror('流水号已超过上限35936',16,-1)
            return -1
        end
    if (@num<=32)
    begin
        set @CharXL=SUBSTRING(@stringxl,@num+1,1)
    end
    while @num>32
        begin
            set @modnum=@num%33
            set @num=@num/33
            set @CharXL=SUBSTRING(@stringxl,@modnum+1,1)+@CharXL
            if (@num<=32)
                begin
                    set @CharXL=SUBSTRING(@stringxl,@num+1,1)+@CharXL
                end
        end
    select @ret=right('000'+@CharXL,3)
    return 0

  • 相关阅读:
    arrayPointer
    shellAPP
    docker
    程序运行时内存管理
    C++ deepin
    coreOS+Docker新一代企业轻量级Linux
    玩转docker
    古典小说丛书系列软件
    读《追随智慧》(一)
    高速基于echarts的大数据可视化
  • 原文地址:https://www.cnblogs.com/leavind/p/3415420.html
Copyright © 2020-2023  润新知