Rand en Funciones Definidas por el usuario. ¿Posible?

No, no es posible directamente. Pero como casi siempre, si no hay una forma directa de hacer las cosas...¡pues las inventamos, jejeje!.  Si intentas crear una Función Definida por el usuario en tu SQL Server que necesite generar algún número aleatorio obtendrás un error similar a éste:
 Invalid use of a side-effecting operator 'rand' within a function.
Una posible solución, simple, podría ser crear una vista que llame a la función que genera el número aleatorio, Rand(), y luego nuestra función  llamará a su vez a dicha vista. ¡Fácil!.
CREATE VIEW rndView AS SELECT RAND() rndResult GO
CREATE FUNCTION RandFn()RETURNS DECIMAL(18,18) AS
BEGIN
DECLARE
@rndValue DECIMAL(18,18
)

SELECT @rndValue = rndResult
FROM rndView
RETURN @rndValue
END
SELECT dbo.RandFn()



No hay comentarios :

Publicar un comentario

Buscar en el Blog: