zoukankan      html  css  js  c++  java
  • 利用SQL表生成按日期序列的唯一ID

    1. 创建一个表,用于存现在最大的ID

    SELECT [ID],[PreFix],[Code] FROM [DocumentNO]

    2. 增加SP,利用锁表,生成相应的ID

    Create PROCEDURE [dbo].[GeneralDocumentNo]
    (
     @preFix nvarchar(256),
     @outCode varchar(256) output
    )
    AS
    BEGIN
    -- =============================================
    -- Author:  xiefs
    -- Create date: 2013-12-18
    -- Description: 生成系统唯一序列号
    -- =============================================
    Declare @docNo nvarchar(256),
            @month varchar(10),
            @day varchar(10),
            @no varchar(10),
            @num int ,
            @lenNum int,
            @sql nvarchar(4000),
            @maxCode varchar(256),
            @tableName varchar(256)
     
     SET NOCOUNT ON;
     set @tableName='DocumentNo';
     set @month=CAST(month(getdate())as varchar);
     set @day = CAST(day(getdate())as varchar);
     if(LEN(@month)=1) set @month='0'+@month;
     if(LEN(@day)=1) set @day='0'+@day;
     
     set @docNo = @preFix+cast(YEAR(getdate()) as varchar)+ @month+@day; 
     set @sql =N'select top 1 @p=code from '+@tableName +' WITH(holdlock,tablockx) where CHARINDEX('''+@docNo+''',code)=1 order by id desc'; 
     EXEC sp_executesql @sql,N'@p varchar(256) output',@p=@maxCode output ;
     if(@maxCode is null) 
     begin
      set @no='1'; 
     end;
     else
     begin
      set @no=CAST((CAST(SUBSTRING(@maxCode,len(@docNo)+1,LEN(@maxCode)) as int)+1) as varchar);  
     end;
     
     set @lennum = LEN(@no);
     set @num =4;
     while @lenNum<4
     begin
     set @lenNum=@lenNum+1;
     set @no='0'+@no;
     end
     insert into documentno(Prefix,Code) values(@preFix,@docNo+@no);
     --select @docNo+@no; 
     set @outCode=@docNo+@no;
    END
  • 相关阅读:
    Linux操作系统的进程管理
    CentOS 7网络配置工具
    Python并发编程-线程
    Python并发编程-queue
    Python并发编程-并发解决方案概述
    图Graph
    计算机网络基础之IP地址详解
    计算机网络基础之TCP/IP 协议栈
    计算机网络基础之网络设备
    计算机网络基础之OSI参考模型
  • 原文地址:https://www.cnblogs.com/chinabc/p/4322929.html
Copyright © 2011-2022 走看看