-- Alphanumeric key generator -- Sequence table CREATE TABLE Sequence (i INT NOT NULL IDENTITY(0,1) PRIMARY KEY); GO -- Encode function CREATE FUNCTION dbo.EncodeInt(@i INTEGER) RETURNS CHAR(8) AS BEGIN; RETURN SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ',FLOOR(@i/9/9/9/9/26/26/26)%26+1 ,1)+ SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ',FLOOR(@i/9/9/9/9/26/26)%26+1 ,1)+ SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ',FLOOR(@i/9/9/9/9/26)%26+1 ,1)+ SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ',FLOOR(@i/9/9/9/9)%26+1 ,1)+ SUBSTRING('123456789',FLOOR(@i/9/9/9)%9+1 ,1)+ SUBSTRING('123456789',FLOOR(@i/9/9)%9+1 ,1)+ SUBSTRING('123456789',FLOOR(@i/9)%9+1 ,1)+ SUBSTRING('123456789',@i%9+1 ,1) END GO -- Next value function CREATE PROC GetNextValue (@pV CHAR(8) OUTPUT) AS SET NOCOUNT ON; DECLARE @i INT; BEGIN TRAN; INSERT INTO dbo.Sequence DEFAULT VALUES; ROLLBACK TRAN; SET @i = SCOPE_IDENTITY(); SET @pV = dbo.EncodeInt(@i); GO -- Test it DECLARE @v CHAR(8); EXEC GetNextValue @pV = @v OUT ; PRINT @v;