40 lines
981 B
Transact-SQL
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
|
||
|
||
|