Stačí jej vytvořit with schemabinding
.
SQL Server poté ověří, zda splňuje kritéria, aby mohl být považován za deterministický (což dělá, protože nepřistupuje k žádným externím tabulkám ani nepoužívá nedeterministické funkce, jako je getdate()
).
Můžete ověřit, že to fungovalo pomocí
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Přidání možnosti schemabinding do vašeho původního kódu funguje dobře, ale byla by o něco jednodušší verze.
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