with schemabinding
作成するだけです .
次に、SQL Server は、決定論的と見なされる基準を満たしているかどうかを確認します (外部テーブルにアクセスしたり、getdate()
などの非決定論的関数を使用したりしないため、これを行います)。 ).
で動作したことを確認できます
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
プレ>元のコードに schemabinding オプションを追加しても問題なく動作しますが、もう少し単純なバージョンでも問題ありません。
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
プレ>