Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj RAND() w funkcji zdefiniowanej przez użytkownika

Problem polega na tym, że nie można wywołać funkcji niedeterministycznej z wnętrza funkcji zdefiniowanej przez użytkownika.

Obszedłem to ograniczenie, tworząc widok, wywołaj tę funkcję w widoku i użyj tego widoku w swojej funkcji, coś takiego...

Definicja widoku

CREATE VIEW vw_getRANDValue
AS
SELECT RAND() AS Value

Definicja funkcji

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć się z bazą danych SQL Server z poziomu JavaScript w przeglądarce?

  2. Najszybszy sposób na aktualizację 120 milionów rekordów

  3. Jak używać zmiennej tabeli w dynamicznej instrukcji sql?

  4. Napraw komunikat 529 „Wyraźna konwersja typu danych typu int do xml jest niedozwolona” w SQL Server

  5. Niejawna konwersja formatu źródłowego SSIS dla daty i godziny