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