Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con funcion 'rand()'

Estas en el tema de Problema con funcion 'rand()' en el foro de SQL Server en Foros del Web. Hola! Resulta que estoy haciendo una función que me devuelva una palabra de 8 caracteres aleatoriamente. Pero me da error al utilizar la función "rand()". ...
  #1 (permalink)  
Antiguo 30/03/2006, 05:28
Avatar de nsmsndie  
Fecha de Ingreso: julio-2005
Mensajes: 61
Antigüedad: 18 años, 9 meses
Puntos: 0
Problema con funcion 'rand()'

Hola!

Resulta que estoy haciendo una función que me devuelva una palabra de 8 caracteres aleatoriamente. Pero me da error al utilizar la función "rand()".

Os pongo el código. Gracias de Antemano


Código:
CREATE Function Password_Cod()
RETURNS nvarchar(50)
AS
BEGIN

  DECLARE 
     @Password_Cod nvarchar(8),  @Cod nvarchar(8),  @Nu int,  @les nvarchar(50),
 @Le nchar(50), @I int  

     Set @les = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnPpQqRrSsTtUuVvWwXxYyZz'

     set @I = 1
     WHILE @I <= 8
     BEGIN
       
       SET Select @Nu =  cast(( (50) * rand() + 1) as int)
       SET @Le = substring(@les, @Nu, 1)
      
     END 

RETURN @Le
End

Ah! si veís algo incorrecto avisarme (es la primera función que hago )

El error es:

Servidor: mensaje 443, nivel 16, estado 1, procedimiento Password_Cod, línea 21
Uso no válido de 'rand' en una función.
  #2 (permalink)  
Antiguo 06/04/2006, 15:33
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
kiza esto te pueda ayudar
http://www.mistrucos.net/truco-infor...nte-285_4.aspx
__________________
Un saludo,
Trucos
Videos
  #3 (permalink)  
Antiguo 06/04/2006, 20:29
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
De hecho no puedes pasar directamente un rand() dentro de una funcion...pero podemos hacer un pequeño truco..., después de ver tu code hay que hacer una serie de correciones tanto en el código como tipos de datos...,

Prueba de ésta forma: (copia y pega)

crea una vista así:

Cita:
CREATE VIEW vRandom
AS
SELECT RAND() as numero
Despues coloca éste código para tu funcion..:

Cita:
CREATE Function Password_Cod()
RETURNS nvarchar(50)
AS
BEGIN
DECLARE @Password_Cod nvarchar(8), @Nu int, @les nvarchar(50),
@Le nchar(1),@I int

Set @les = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnPpQqRrSsTtUuVvWwXxYyZ z'
DECLARE @random FLOAT
SET @I = 1
SET @Password_Cod = ''
WHILE @I <= 8
BEGIN
SET @random = (SELECT numero FROM vRandom)
SET Select @Nu = cast(( (50) * @random + 1) as int)
SET @Le = substring(@les, @Nu, 1)
SET @Password_Cod = @Password_Cod + @Le
SET @i = @i + 1
END

RETURN @Password_Cod
End

Espero que te sirva..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:29.