35 lines
879 B
MySQL
35 lines
879 B
MySQL
|
|
|||
|
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
|
|||
|
|