自動編號函數

根據表中已經存在的編號產生一個新編號,只須要傳入標識,表,字段。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
相關文章
相關標籤/搜索