Du behöver bara skapa den with schemabinding
.
SQL Server kommer sedan att verifiera om den uppfyller kriterierna för att betraktas som deterministisk (vilket den gör eftersom den inte kommer åt några externa tabeller eller använder icke-deterministiska funktioner som getdate()
).
Du kan verifiera att det fungerade med
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Att lägga till schemabindningsalternativet till din ursprungliga kod fungerar bra men en något enklare version skulle vara det.
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