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
  • 相关阅读:
    k3 cloud点击按钮单开单据
    k3 cloud _LK表字段代表的意思
    sql server根据触发器名称查看代码
    sql server中查询所有触发器已经对应的表名称
    面向架构编程
    领域设计:领域事件
    QApplication: No such file or directory 完美解决方案
    C++ GUI Qt4编程(第二版) 源代码 下载
    ArcMap进行天空开阔度(SVF)分析
    wpf 高性能自定义chart
  • 原文地址:https://www.cnblogs.com/chinabc/p/4322929.html
Copyright © 2011-2022 走看看