Sie müssen es nur with schemabinding
erstellen .
SQL Server überprüft dann, ob es die Kriterien erfüllt, um als deterministisch betrachtet zu werden (was es tut, da es nicht auf externe Tabellen zugreift oder nicht deterministische Funktionen wie getdate()
verwendet). ).
Sie können überprüfen, ob es funktioniert hat mit
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Das Hinzufügen der Schemabinding-Option zu Ihrem Originalcode funktioniert gut, aber eine etwas einfachere Version wäre.
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