Sql Server deterministische benutzerdefinierte Funktion

Habe ich folgende benutzerdefinierte Funktion:

create function [dbo].[FullNameLastFirst]
(
    @IsPerson bit,
    @LastName nvarchar(100),
    @FirstName nvarchar(100)
)
returns nvarchar(201)
as
begin
    declare @Result nvarchar(201)
    set @Result = (case when @IsPerson = 0 then @LastName else case when @FirstName = '' then @LastName else (@LastName + ' ' + @FirstName) end end)
    return @Result
end

Ich kann nicht erstellen Sie einen Index für eine berechnete Spalte mit dieser Funktion, weil es nicht deterministisch ist.
Könnte jemand erklären, warum ist es nicht deterministisch, und schließlich, wie zu ändern, um es deterministisch?
Dank

InformationsquelleAutor der Frage opaera | 2010-09-06

Schreibe einen Kommentar