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