Devi solo crearlo with schemabinding
.
SQL Server verificherà quindi se soddisfa o meno i criteri per essere considerato deterministico (cosa che fa poiché non accede a tabelle esterne o utilizza funzioni non deterministiche come getdate()
).
Puoi verificare che abbia funzionato con
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
L'aggiunta dell'opzione di schemabinding al codice originale funziona bene, ma sarebbe una versione leggermente più semplice.
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