sql >> Database >  >> RDS >> Sqlserver

Gebruik RAND() in de door de gebruiker gedefinieerde functie

Het probleem is dat je een niet-deterministische functie niet kunt aanroepen vanuit een door de gebruiker gedefinieerde functie.

Ik heb deze beperking omzeild door een weergave te maken, die functie in de weergave aan te roepen en die weergave in je functie te gebruiken, zoiets als dit......

Definitie bekijken

CREATE VIEW vw_getRANDValue
AS
SELECT RAND() AS Value

Functiedefinitie

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


  1. hoe LINQ naar SQL te gebruiken met mySQL

  2. UID – Retourneer de ID van de huidige sessie in Oracle

  3. Query Store:de impact van indexen op bijlagen weergeven

  4. Wat is databasetesten en hoe voer je het uit?