Criar identificador
Preciso criar um código que deve seguir a seguinte regra:
preferencialmente storedprocedure, ele precisa criar um identificador único que precisa ter letras e números, sendo que o formato deve ser
xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx (são 32 caracteres incluindo letras e números), sendo um conjunto de 8 caracteres-4caracteres-4caracteres-12caracteres.
Como eu posso criar esse código em storedprocedure Banco de Dados SQL SERVER?
Regis
Régis Mello
Curtidas 0
Respostas
Luiz Maia
03/04/2009
Regis,
Segue a SP, altere-a como precisar:
ALTER PROCEDURE [dbo].[GenerateRandomString]
@randomString varchar(32) OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @sLength int
DECLARE @counter tinyint
DECLARE @nextChar char(1)
DECLARE @letras varchar(255)
SET @counter = 1
SET @sLength = 10
SET @randomString = ''
SET @letras = '65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90'
WHILE @counter <= 31
BEGIN
SELECT @nextChar = CHAR(ROUND(RAND() * 93 + 33, 0))
IF ASCII(@nextChar) in (65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90)
Or ASCII(@nextChar) in (48,49,50,51,52,53,51,55,56,57)
BEGIN
IF @counter = 9 OR @counter = 14 OR @counter = 19
SELECT @randomString = @randomString + '-'
ELSE
SELECT @randomString = @randomString + @nextChar
SET @counter = @counter + 1
END
END
END
Para ver seu funcionamento, execute:
declare @variavel char(32)
exec GenerateRandomString @variavel output
PRINT 'O valor é: '+@variavel
Abraços
Att
Luiz Maia
GOSTEI 0
Régis Mello
03/04/2009
Funcionou perfeitamente, era exatamente isso que eu queria, nossa ficou ótimo, valew mesmo. E super fácil de entender e aprender.
Valew
GOSTEI 0
Luiz Maia
03/04/2009
Regis,
Precisando, é so falar.
Abraços
Att
Luiz Maia
GOSTEI 0