sql >> Base de Datos >  >> RDS >> Sqlserver

Función definida por el usuario determinista del servidor Sql

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