sql >> Databasteknik >  >> RDS >> Sqlserver

Använd RAND() i användardefinierad funktion

Problemet är att du inte kan anropa en icke-deterministisk funktion inifrån en användardefinierad funktion.

Jag kom runt denna begränsning genom att skapa en vy, anropa den funktionen inuti vyn och använda den vyn inuti din funktion, ungefär så här......

Visa definition

CREATE VIEW vw_getRANDValue
AS
SELECT RAND() AS Value

Funktionsdefinition

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. MySQL använder inte index med WHERE IN-klausul?

  2. Värdet av data över tid

  3. Utmaningslösningar för nummerseriegenerator – del 4

  4. Ny MariaDB AX-version med MariaDB ColumnStore 1.1.3 GA