35 lines
879 B
Transact-SQL
35 lines
879 B
Transact-SQL
|
|
ALTER PROCEDURE [dbo].[SpGetNewCode3]
|
|
@tableName VARCHAR(50),/*表名*/
|
|
@columnName VARCHAR(50),/*列名*/
|
|
@prefix VARCHAR(100),/*流水号编码前缀*/
|
|
@returnVal NVARCHAR(200) OUTPUT
|
|
AS
|
|
/*获取一个新的流水号(后三位上增加)*/
|
|
DECLARE
|
|
@sql NVARCHAR(500),
|
|
@old NVARCHAR(50),
|
|
@newid VARCHAR(50),
|
|
@prefix2 NVARCHAR(100),
|
|
@maxId NVARCHAR(50)/*已分配的最大值*/
|
|
SET @prefix2= REPLACE(@prefix, @columnName, '')
|
|
SELECT @sql=N'SELECT @maxId=MAX('+@columnName+') from '+@tableName+' where ' + @columnName + ' like ' + '''' + @prefix2 + '%'''
|
|
EXEC sp_executesql @sql, N'@maxId nvarchar(50) OUTPUT', @maxId OUTPUT
|
|
SET @old=@maxId
|
|
|
|
IF(@old IS NULL)
|
|
BEGIN
|
|
SET @newid=@prefix+'001'
|
|
END
|
|
|
|
ELSE
|
|
BEGIN
|
|
SET @newid = (SELECT MAX(RIGHT(@old,3)))+1
|
|
SET @newid = @prefix +RIGHT('000'+@newid,3)
|
|
END
|
|
|
|
SET @returnVal=@newid
|
|
|
|
GO
|
|
|