xinjiang/DataBase/版本日志/SGGLDB_V2023-11-13-001.sql

40 lines
981 B
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
/*因为最后字串包括R1K1所以这么处理*/
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