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

Brug RAND() i brugerdefineret funktion

Problemet er, at du ikke kan kalde en ikke-deterministisk funktion inde fra en brugerdefineret funktion.

Jeg kom uden om denne begrænsning ved at oprette en visning, kalde den funktion inde i visningen og bruge den visning inde i din funktion, sådan noget som dette......

Se 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. Primær nøgle SQL-vejledning – Sådan defineres en primær nøgle i en database

  2. Uddrag dato (åååå/mm/dd) fra et tidsstempel i PostgreSQL

  3. Sådan indsætter du værdi i identitetskolonne manuelt i SQL Server-tabel - SQL Server / T-SQL vejledning del 41

  4. Rails 3 Mysql-problemer