zoukankan      html  css  js  c++  java
  • 自动为指定表的指定字段生成编号的存储过程

     

    --根据日期自动生成编号
    --
    格式:20070517000001
    create  procedure sp_BuildNumber(
        
    @length int,                --日期后面的编号长度
        @fieldname nvarchar(20),    --字段名称
        @tablename nvarchar(20),    --表名称
        @return nvarchar(20) output    --输出变量
    )
    as
        
    begin
            
    declare @sql nvarchar(2000)
            
    set @sql='
                declare @nowdate nvarchar(10)
                declare @mincoding nvarchar(20)
                declare @coding nvarchar(20)
            
                set @nowdate=convert(nvarchar(10),getdate(),120)
                set @nowdate=replace(@nowdate,
    ''-'','''')
            
                set @mincoding=@nowdate+replicate(
    ''0'',@length-1)+''0''
                
                select @coding=isnull(max(
    '+@fieldname+'),@mincoding) from '+@tablename+' where '+@fieldname+' like @nowdate+''%''
                
                set @return=convert(nvarchar,convert(numeric(18,0),@coding)+1)
            
    '

            
    exec sp_executesql @sql,N'@length int,@return nvarchar(20) output',@length,@return output
        
    end

    GO

    调用例子(订单编号):
    declare @number nvarchar(20)
    exec sp_BuildNumber 6,'OrderNumber','Orders',@number output

    可根据需要更改输出格式。
  • 相关阅读:
    2018/12/06 L1-031 到底是不是太胖了 Java
    2018/12/06 L1-030 一帮一 Java
    2018/12/06 L1-029 是不是太胖了 Java
    .NET Framework 类库命名空间
    .NET获取根目录
    ddd领域驱动设计
    垃圾回收
    rest api
    数据库ACID
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/lyout/p/749924.html
Copyright © 2011-2022 走看看