2009-02-16 9 views
5

पर स्केलर यूडीएफ में नल पैरामीटर स्केलर यूडीएफ (CREATE FUNCTION देखें) के लिए विकल्प "पूर्ण इनपुट पर पूर्ण लौटाता है" पैरामीटर शून्य को निष्पादित करता है और पैरामीटर शून्य हो जाता है।एमएसएसएलएल

यही है, यह शॉर्ट सर्किट है।

क्या कोई जानता है कि यह एकाधिक पैरामीटर कैसे प्रबंधित करता है?

यह एकाधिक पैरामीटर के साथ एक फंक्शन कॉल शॉर्ट सर्किट के लिए उपयोगी होगा, कहें कि पहले वाला कम से कम शून्य है या नहीं।

जब मेरे पास समय होता है, तो मैं udf कॉलों को आजमाने और ढूंढने के लिए प्रोफाइलर का उपयोग करूंगा। मैंने खोजा है लेकिन कुछ भी नहीं मिला .. अधिक संभावना है कि मैंने सही खोज शब्द का उपयोग नहीं किया हो।

इस बीच, क्या किसी के पास कोई विचार या अनुभव है?

अन्य आरडीबीएमएस दुनिया से जवाब भी स्वागत कर रहे हैं .. यह एक एएनएसआई सेटिंग है और मुझे अपनी खोजों

संपादित करें, टिप्पणी के आधार पर में डीबी 2 और MySQL के लिए परिणाम प्राप्त हुए थे: केवल गैर CLR कार्यों

के लिए

चीयर्स एस

संपादित करें: मुझे प्रोफाइलर चलाने की आवश्यकता नहीं है। रवींद्र!

CREATE FUNCTION dbo.ufnTest (
    @dummy tinyint 
) 
RETURNS tinyint 
WITH RETURNS NULL ON NULL INPUT 
AS 
BEGIN 
    RETURN 1 
END 
GO 
SELECT dbo.ufnTest(0), dbo.ufnTest(NULL) 
GO 


ALTER FUNCTION dbo.ufnTest (
    @dummy tinyint 
) 
RETURNS tinyint 
--WITH RETURNS NULL ON NULL INPUT 
AS 
BEGIN 
    RETURN 1 
END 
GO 
SELECT dbo.ufnTest(0), dbo.ufnTest(NULL) 
GO 


ALTER FUNCTION dbo.ufnTest (
    @dummy tinyint, 
    @dummy2 tinyint 
) 
RETURNS tinyint 
WITH RETURNS NULL ON NULL INPUT 
AS 
BEGIN 
    RETURN 1 
END 
GO 
SELECT dbo.ufnTest(0, 2), dbo.ufnTest(NULL, 2), dbo.ufnTest(0, NULL) 
GO 


ALTER FUNCTION dbo.ufnTest (
    @dummy tinyint, 
    @dummy2 tinyint 
) 
RETURNS tinyint 
--WITH RETURNS NULL ON NULL INPUT 
AS 
BEGIN 
    RETURN 1 
END 
GO 
SELECT dbo.ufnTest(0, 2), dbo.ufnTest(NULL, 2), dbo.ufnTest(0, NULL) 
GO 

उत्तर

9

हाँ, एक समारोह है कि निर्दिष्ट करता RETURNS NULL ON NULL INPUT होगा शॉर्ट सर्किट अगर इसकी पा के किसी भी रैमर NULL हैं।

documentation यह सुझाव देता है, हालांकि यह अस्पष्ट है और केवल सीएलआर कार्यों का जिक्र कर रहा है। (मुझे लगता है कि यह स्पष्ट करने के लिए कि NULL व्यवहार CREATE FUNCTION में निर्दिष्ट CLR पद्धति पर OnNullCall विशेषता को पार कर जाएगी माइक्रोसॉफ्ट के प्रयास है।)

मैं दोनों SQL2005 में गैर CLR कार्यों के साथ यह परीक्षण किया है और SQL2008 और यह लघु सर्किट बिल्कुल अपेक्षित के रूप में।

+0

जानना उपयोगी है। मुझे कई स्ट्रिंग मैनिपुलेशन यूडीएफ मिल गए हैं जो इस – Kristen

+1

से लाभान्वित होंगे इस मामले में एमएसडीएन दस्तावेज को बेहतर तरीके से सुधारना चाहिए ! – gotqn

2

किसी को भी पता है कि यह कैसे एक से अधिक पैरामीटर संभालती है: यह व्यवहार को दर्शाता है?

अपने लिंक में स्पष्टीकरण के लिए पर्याप्त है, या आप अलग राय देख रहे थे?

रिटर्न शून्य इनपुट पर रिक्त यदि एक CLR समारोह में निर्दिष्ट है, यह इंगित करता है कि एसक्यूएल सर्वर शून्य लौट सकते हैं जब किसी भी तर्क यह प्राप्त करता है की शून्य है, वास्तव में के शरीर लागू बिना समारोह

+0

गैर-सीएलआर कार्यों के लिए ... – gbn

+0

@ जीबीएन: पूर्ण इनपुट पर पूर्ण वापसी केवल सीएलआर कार्यों के लिए लागू है। – casperOne

+0

मुझे यह एकल पैरामीटर गैर-सीएलआर के लिए शॉर्ट सर्किट पता है। कहां से आप अपनी जानकारी प्राप्त करते हैं? – gbn

संबंधित मुद्दे