Bạn chỉ cần tạo nó with schemabinding
.
Sau đó, SQL Server sẽ xác minh xem nó có đáp ứng các tiêu chí được coi là xác định hay không (điều này thực hiện vì nó không truy cập vào bất kỳ bảng bên ngoài nào hoặc sử dụng các hàm không xác định như getdate()
).
Bạn có thể xác minh rằng nó hoạt động với
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
Thêm tùy chọn schemabinding vào mã gốc của bạn hoạt động tốt nhưng một phiên bản đơn giản hơn một chút sẽ là.
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