Wystarczy go utworzyć with schemabinding
.
SQL Server następnie zweryfikuje, czy spełnia kryteria, które należy uznać za deterministyczne (co robi, ponieważ nie ma dostępu do żadnych zewnętrznych tabel ani nie używa funkcji niedeterministycznych, takich jak getdate()
).
Możesz sprawdzić, czy działało z
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Dodanie opcji schemabinding do oryginalnego kodu działa dobrze, ale nieco prostsza wersja byłaby.
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