SQL सर्वर में, एक अदिश UDF, या अदिश उपयोगकर्ता-परिभाषित फ़ंक्शन, एक उपयोगकर्ता-परिभाषित फ़ंक्शन है जो एकल मान देता है।
यह तालिका-मूल्यवान फ़ंक्शन के विपरीत है, जो एक तालिका के रूप में सेट किए गए परिणाम को लौटाता है।
उपयोगकर्ता-परिभाषित कार्यों को टी-एसक्यूएल यूडीएफ या सीएलआर (सामान्य भाषा रनटाइम) यूडीएफ के रूप में लिखा जा सकता है। CLR आपको किसी भी .NET Framework प्रोग्रामिंग भाषा का उपयोग करके प्रबंधित कोड में UDF बनाने में सक्षम बनाता है। ये फ़ंक्शन तब टी-एसक्यूएल या अन्य प्रबंधित कोड तक पहुंच योग्य होते हैं।
उदाहरण 1 - बेसिक स्केलर UDF
यहां एक उदाहरण दिया गया है जो कोड एक बुनियादी टी-एसक्यूएल स्केलर यूडीएफ बनाने के लिए उपयोग किया जाता है।
CREATE FUNCTION dbo.ufn_discountPrice( @price DECIMAL(12,2), @discount DECIMAL(12,2) ) RETURNS DECIMAL (12,2) AS BEGIN RETURN @price * (1 - @discount); END;
यह अदिश UDF दो मापदंडों को स्वीकार करता है; @price
और @discount
. जब भी फ़ंक्शन का आह्वान किया जाता है तो इन्हें फ़ंक्शन में तर्क के रूप में पास किया जाता है। फ़ंक्शन उन तर्कों का मान लेता है, उन मानों का उपयोग करके गणना करता है, फिर परिणामी मान देता है। इस मामले में, रियायती मूल्य वापस कर दिया जाता है।
उदाहरण 2 - UDF को आमंत्रित करें
एक बार यूडीएफ बन जाने के बाद, जब भी आपको इसकी आवश्यकता हो, इसे टी-एसक्यूएल कोड के भीतर लागू किया जा सकता है।
यूडीएफ को लागू करने का एक उदाहरण यहां दिया गया है:
SELECT dbo.ufn_discountPrice(100, .2) AS Result;
परिणाम
+----------+ | Result | |----------| | 80.00 | +----------+
आप गणना किए गए कॉलम में स्केलर यूडीएफ का भी उपयोग कर सकते हैं। यह विशेष रूप से उपयोगी हो सकता है यदि आपको किसी अन्य तालिका में डेटा तक पहुंचने के लिए गणना किए गए कॉलम की आवश्यकता है।
फ़ंक्शन विकल्प
जब आप एक अदिश UDF बनाते हैं, तो ऐसे कई विकल्प होते हैं जिन्हें आप फ़ंक्शन पर लागू कर सकते हैं।
उदाहरण के लिए आप निर्दिष्ट कर सकते हैं कि यह स्कीमा बाध्य होना चाहिए या नहीं। आप निर्दिष्ट कर सकते हैं कि इसे एन्क्रिप्ट किया जाना चाहिए। आप एक EXECUTE AS
. भी निर्दिष्ट कर सकते हैं सुरक्षा संदर्भ निर्दिष्ट करने के लिए क्लॉज जिसके तहत उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन निष्पादित किया जाता है।
उपयोगकर्ता-परिभाषित फ़ंक्शन को बनाते या बदलते समय आपके द्वारा प्रदान किए जा सकने वाले विकल्पों की विस्तृत सूची के लिए Microsoft दस्तावेज़ देखें।
पैरामीटर डेटा प्रकार
T-SQL फ़ंक्शन के लिए, टाइमस्टैम्प को छोड़कर, CLR उपयोगकर्ता-परिभाषित प्रकार और उपयोगकर्ता-परिभाषित तालिका प्रकारों सहित सभी डेटा प्रकारों की अनुमति है और नॉनस्केलर कर्सर और तालिका प्रकार।
CLR कार्यों के लिए, पाठ . को छोड़कर, CLR उपयोगकर्ता-परिभाषित प्रकारों सहित सभी डेटा प्रकारों की अनुमति है , ntext , छवि , उपयोगकर्ता-परिभाषित तालिका प्रकार, टाइमस्टैम्प डेटा प्रकार, और अस्केलर कर्सर और तालिका प्रकार।
डेटा प्रकार लौटाएं
T-SQL स्केलर UDF के लिए वापसी डेटा प्रकार टाइमस्टैम्प को छोड़कर कोई भी डेटा प्रकार हो सकता है और नॉनस्केलर कर्सर और तालिका प्रकार।
CLR फ़ंक्शन टेक्स्ट . को छोड़कर किसी भी डेटा प्रकार का उपयोग कर सकते हैं , ntext , छवि , टाइमस्टैम्प , और अस्केलर कर्सर और तालिका प्रकार।
टी-एसक्यूएल और सीएलआर दोनों कार्यों में इसके वापसी मूल्य के लिए एक सीएलआर उपयोगकर्ता-परिभाषित प्रकार हो सकता है।