Basf_FCL/DataBase/版本日志/已更新/FCLDB_2024.04.03.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