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