Solo necesita crearlo with schemabinding
.
SQL Server luego verificará si cumple o no con los criterios para ser considerado como determinista (lo que hace ya que no accede a ninguna tabla externa ni utiliza funciones no deterministas como getdate()
).
Puede verificar que funcionó con
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Agregar la opción de enlace de esquema a su código original funciona bien, pero sería una versión un poco más simple.
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