根据表中已经存在的编号产生一个新编号,只需要传入标识,表,字段。
可复用。
/******************************************* **过程名:[[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