sql >> Database >  >> RDS >> Sqlserver

Sql Server deterministische door de gebruiker gedefinieerde functie

Je hoeft het alleen maar with schemabinding aan te maken .

SQL Server zal dan verifiëren of het al dan niet voldoet aan de criteria om als deterministisch te worden beschouwd (wat het doet omdat het geen toegang heeft tot externe tabellen of niet-deterministische functies gebruikt zoals getdate() ).

U kunt controleren of het werkte met

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

Het toevoegen van de optie voor schemabinding aan uw originele code werkt prima, maar een iets eenvoudigere versie zou dat zijn.

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. hoe kan ik de CMD-opdracht uitvoeren in de c#-consoletoepassing?

  2. Ongewenste nieuwe regels bij het spoolen van een sqlplus-resultaat naar een xml-bestand

  3. Entity Framework Oracle en Sql Server - hoe een database-onafhankelijke applicatie te bouwen

  4. Automatisch id genereren in Spring MVC