आपको बस इसे बनाने की जरूरत है with schemabinding
.
SQL सर्वर तब यह सत्यापित करेगा कि यह नियतात्मक के रूप में माने जाने वाले मानदंडों को पूरा करता है या नहीं (जो यह करता है क्योंकि यह किसी बाहरी टेबल तक नहीं पहुंचता है या गैर नियतात्मक कार्यों जैसे getdate()
का उपयोग नहीं करता है। )।
आप सत्यापित कर सकते हैं कि इसने
. के साथ काम किया हैSELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')
अपने मूल कोड में स्कीमाबाइंडिंग विकल्प जोड़ना ठीक काम करता है लेकिन थोड़ा सरल संस्करण होगा।
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