1. 程式人生 > >sql中自動生成ID編號

sql中自動生成ID編號

alter PROCEDURE  ListIdBuild
(
 @action  INT    = 1,   -- 型別 如1是生成一種編號,2是生成另一種編號
 @lstId   NVARCHAR(50) = NULL OUTPUT
)
AS
DECLARE
 @prefix  NVARCHAR(9),
 @maxId   INT,
 @lstPre  NVARCHAR(2)
BEGIN
 SET @prefix =  CONVERT(nchar(6), GETDATE(), 12)
 IF @action  = 1   --型別
 BEGIN
  SELECT @lstId = MAX([Id]) FROM    users    WHERE SUBSTRING([Id], 2, 2) = LEFT(@prefix, 2)
  SET @lstPre = 'U'
 END
       
 IF @lstId IS NULL SET @lstId = '00000'
 SET @lstId = RIGHT(@lstId, 5)
 SET @maxId = CAST (@lstId AS int) + 1
 SET @lstId = CONVERT(NVARCHAR(12),  @maxId)
 SET @lstId = RIGHT('000000' + @lstId, 5)
 SET @lstId = @lstPre+ @prefix + @lstId
END