sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server deterministisk användardefinierad funktion

Du behöver bara skapa den with schemabinding .

SQL Server kommer sedan att verifiera om den uppfyller kriterierna för att betraktas som deterministisk (vilket den gör eftersom den inte kommer åt några externa tabeller eller använder icke-deterministiska funktioner som getdate() ).

Du kan verifiera att det fungerade med

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

Att lägga till schemabindningsalternativet till din ursprungliga kod fungerar bra men en något enklare version skulle vara det.

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. oracle SQL hur man tar bort tid från datum

  2. SQL-fråga med MySQL

  3. Hur man tar bort en mysql-post med jquery

  4. MySQL Infoga:Testa först?