Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzare RAND() nella funzione definita dall'utente

Il problema è che non è possibile chiamare una funzione non deterministica dall'interno di una funzione definita dall'utente.

Ho aggirato questa limitazione creando una vista, chiamando quella funzione all'interno della vista e usando quella vista all'interno della tua funzione, qualcosa del genere......

Visualizza definizione

CREATE VIEW vw_getRANDValue
AS
SELECT RAND() AS Value

Definizione della funzione

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