2008-12-12 11 views
43

मेरे पास एसक्यूएल में उपयोगकर्ता परिभाषित फ़ंक्शन है जिसे GetBuisnessDays कहते हैं, यह @startdate और @enddate लेता है और दो तिथियों के बीच व्यावसायिक दिनों की संख्या देता है। मैं अपने चयन के भीतर उस फ़ंक्शन को कैसे कॉल कर सकता हूं?एसक्यूएल उपयोगकर्ता परिभाषित फ़ंक्शन का चयन

यहाँ मैं क्या करने के लिए ..

SELECT getBusinessDays(a.opendate,a.closedate) 
FROM account a 
WHERE ... 
+0

बस याद रखें कि ऑप्टिमाइज़र उन पर प्रतिक्रिया करता है कि यूडीएफ अक्सर क्वेरी प्रदर्शन को मार सकता है। वे अक्सर सेट-आधारित के बजाय पंक्ति द्वारा पंक्ति को संसाधित करने का मतलब रखते हैं। आपकी स्थिति के लिए आप कैलेंडर तालिका का उपयोग करके बेहतर हो सकते हैं और आवश्यकता होने पर इसके खिलाफ चयन कर सकते हैं। –

उत्तर

77

हाँ, आप लगभग ऐसा कर सकते हैं करना चाहते हैं क्या करना है:

SELECT dbo.GetBusinessDays(a.opendate,a.closedate) as BusinessDays 
FROM account a 
WHERE... 
+5

लानत - मुझे इसे हरा - आपको मालिक उपसर्ग की आवश्यकता है –

5

उपयोग एक अदिश-मान यूडीएफ, नहीं एक मेज-मूल्य से एक है, तो आप इसे एक चयन में उपयोग कर सकते हैं जैसा आप चाहते हैं।

5

यदि यह एक टेबल मूल्य समारोह (एक मेज सेट रिटर्न) है आप बस एक टेबल

इस समारोह को पारित कर दिया अल्पविराम से अलग सूची से सभी मूल्यों के साथ एक स्तंभ तालिका उत्पन्न करता है के रूप में यह शामिल हो

SELECT * FROM dbo.udf_generate_inlist_to_table('1,2,3,4') 
संबंधित मुद्दे

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