自动编号函数

根据表中已经存在的编号产生一个新编号,只须要传入标识,表,字段。sql

可复用。spa

/******************************************* **过程名:[[Proc_CreateCode]] **输入参数: **输出: **功能描述:根据开头标识在表中获取最新编号 **做者: **更新:修改人xxx;修改日期xxxx **版本: ********************************************/
create Procedure [dbo].[Proc_CreateCode]
 @head Varchar(5),    --开头标识
 @table Varchar(50),  --表名
 @Key Varchar(20),    --编号字段
 @Code varchar(20) Out--新编号
 As
 Begin
    Declare @sql Nvarchar(2000)=''
    --拼接查询最大ID语句
    Set @sql='Select @MaxID=Max('+@Key+') From '+@table+' where left('+@Key+',2)='''+@head+''' '
    Exec Sp_executesql @sql,N'@MaxID varchar(20) out',@Code Out print @sql
    --当前日期
    Declare @NowDate Varchar(8) Select @NowDate=CONVERT(Varchar,GETDATE(),112) If(@Code Is Null Or @Code='') Begin
        Set @Code = @head+@NowDate+'001'
    End
    Else
    Begin
        IF(CHARINDEX(@NowDate,@Code)=0) Begin
            Set @Code = @head+@NowDate+'001'
        End
        Else
        Begin
            --获取最大ID的编号部分
            Declare @num int=0
            Set @num=right(@Code,3)+1
            --生成新ID
            Set @Code = @head+@NowDate+Substring('000',1,3-len(@num))+Convert(Varchar,@num) End
    End    
 End
相关文章
相关标签/搜索