Fórum Criar identificador #4361

03/04/2009

0

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

Régis Mello

Responder

Posts

03/04/2009

Luiz Maia

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
Responder

Gostei + 0

04/04/2009

Régis Mello

Funcionou perfeitamente, era exatamente isso que eu queria, nossa ficou ótimo, valew mesmo. E super fácil de entender e aprender.   Valew
Responder

Gostei + 0

04/04/2009

Luiz Maia

Regis,   Precisando, é so falar. Abraços   Att Luiz Maia
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar