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

    可根据需要更改输出格式。
  • 相关阅读:
    152. 乘积最大子数组
    Java中wait和sleep方法的区别(美团面试面到了)
    HashMap1.7与1.8的区别
    类型转换
    Goland控制台中文乱码
    Spring 之 IOC
    Spring定时任务/Cron
    Mybatis 不加载xml文件
    MySQL :=和=的区别
    Go 第一个程序
  • 原文地址:https://www.cnblogs.com/lyout/p/749924.html
Copyright © 2011-2022 走看看