Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utiliser RAND() dans la fonction définie par l'utilisateur

Le problème est que vous ne pouvez pas appeler une fonction non déterministe depuis une fonction définie par l'utilisateur.

J'ai contourné cette limitation en créant une vue, en appelant cette fonction dans la vue et en utilisant cette vue dans votre fonction, quelque chose comme ça......

Afficher la définition

CREATE VIEW vw_getRANDValue
AS
SELECT RAND() AS Value

Définition de la fonction

ALTER FUNCTION getNumber(@_id int )
RETURNS DECIMAL(18,4)
AS
BEGIN
   DECLARE @RtnValue DECIMAL(18,4);
   SELECT TOP 1 @RtnValue = EmployeeID 
   FROM dbo.Employees
   ORDER BY EmployeeID DESC

   SET @RtnValue = (SELECT Value FROM vw_getRANDValue) * @RtnValue * (1.0000/100.0000) --<-- to make sure its not converted to int
    RETURN @RtnValue;
END