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

SQL Server deterministisk brugerdefineret funktion

Du skal bare oprette den with schemabinding .

SQL Server vil derefter verificere, om den opfylder kriterierne for at blive betragtet som deterministisk (hvilket den gør, da den ikke tilgår nogen eksterne tabeller eller bruger ikke-deterministiske funktioner såsom getdate() ).

Du kan bekræfte, at det virkede med

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

Tilføjelse af skemabindingsindstillingen til din originale kode fungerer fint, men en lidt enklere version ville være 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. Flere datatyper array i PostgreSQL

  2. INSERT operation ved hjælp af Node.js og PostgreSQL virker ikke

  3. Rumlig forespørgsel på et stort bord med flere selvstændige joinforbindelser, der udfører langsomt

  4. UTF-8-databaseproblem