Du skal bare oprette den with schemabinding
.
SQL Server vil derefter verificere, om den opfylder kriterierne for at blive betragtet som deterministisk (hvilket den gør, da den ikke tilgår nogen eksterne tabeller eller bruger ikke-deterministiske funktioner såsom getdate()
).
Du kan bekræfte, at det virkede med
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Tilføjelse af skemabindingsindstillingen til din originale kode fungerer fint, men en lidt enklere version ville være 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