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

Sql Server deterministyczna funkcja zdefiniowana przez użytkownika

Wystarczy go utworzyć with schemabinding .

SQL Server następnie zweryfikuje, czy spełnia kryteria, które należy uznać za deterministyczne (co robi, ponieważ nie ma dostępu do żadnych zewnętrznych tabel ani nie używa funkcji niedeterministycznych, takich jak getdate() ).

Możesz sprawdzić, czy działało z

SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')

Dodanie opcji schemabinding do oryginalnego kodu działa dobrze, ale nieco prostsza wersja byłaby.

CREATE FUNCTION [dbo].[FullNameLastFirst] (@IsPerson  BIT,
                                           @LastName  NVARCHAR(100),
                                           @FirstName NVARCHAR(100))
RETURNS NVARCHAR(201)
WITH SCHEMABINDING
AS
  BEGIN
      RETURN CASE
               WHEN @IsPerson = 0
                     OR @FirstName = '' THEN @LastName
               ELSE @LastName + ' ' + @FirstName
             END
  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. Nieprawidłowa składnia w pobliżu „LIMIT” przy użyciu mssql

  2. Sformatować czas jako 24-godzinny czas wojskowy?

  3. Jak przeglądać dzienniki transakcji w SQL Server 2008

  4. Jakiego rozmiaru używasz dla varchar(MAX) w deklaracji parametru?

  5. Co to jest SQL Operations Studio (SQLOPS)?