Files
xinjiang/DataBase/版本日志/SGGLDB_V2023-11-13-001.sql
T
2024-11-19 09:45:27 +08:00

40 lines
981 B
Transact-SQL

CREATE PROCEDURE [dbo].[SpGetNewTrustCode5ByProjectId]
@tableName VARCHAR(50),/*表名*/
@columnName VARCHAR(50),/*列名*/
@projectId NVARCHAR(50),/*项目*/
@prefix VARCHAR(50),/*流水号编码前缀*/
@returnVal NVARCHAR(50) OUTPUT
AS
/*获取一个新的流水号(后五位上增加)*/
DECLARE
@sql NVARCHAR(500),
@old NVARCHAR(50),
@newid VARCHAR(50),
@maxId NVARCHAR(50)/*已分配的最大值*/
SELECT @sql=N'SELECT @maxId=MAX('+@columnName+') from '+@tableName+' where ProjectId = ''' + @projectId + '''and CH_TrustType=''1'' and ' + @columnName+' like ' + '''%' + @prefix + '%'''
EXEC sp_executesql @sql, N'@maxId nvarchar(50) OUTPUT', @maxId OUTPUT
/*因为最后字串包括R1,K1,所以这么处理*/
SET @old=REVERSE(SUBSTRING(REVERSE(@maxId),1,CHARINDEX('-',REVERSE(@maxId))-1))
IF(@old IS NULL)
BEGIN
SET @newid=@prefix+'0001'
END
ELSE
BEGIN
SET @newid = (SELECT MAX(LEFT(@old,4)))+1
SET @newid = @prefix +RIGHT('0000'+@newid,4)
END
SET @returnVal=@newid
GO