SQL सर्वर में, एक टेबल-वैल्यू फ़ंक्शन (TVF) एक उपयोगकर्ता-परिभाषित फ़ंक्शन है जो एक तालिका देता है। यह एक स्केलर फ़ंक्शन के विपरीत है, जो एकल मान देता है।
आप तालिका-मूल्यवान फ़ंक्शन को उसी तरह से लागू कर सकते हैं जैसे आप किसी तालिका से पूछ सकते हैं। उदाहरण के लिए, आप इसे SELECT
. में इस्तेमाल कर सकते हैं बयान। कुछ मामलों में, तालिका-मूल्यवान फ़ंक्शन का उपयोग डेटा को अपडेट करने, हटाने और सम्मिलित करने के लिए भी किया जा सकता है।
टेबल-वैल्यू फंक्शन के प्रकार
जब आप एक टेबल-वैल्यूड फंक्शन बनाते हैं, तो आपके पास ट्रांजैक्ट-एसक्यूएल टेबल-वैल्यूड फंक्शन या कॉमन लैंग्वेज रनटाइम (सीएलआर) टेबल-वैल्यूड फंक्शन बनाने का विकल्प होता है।
ट्रांजैक्ट-एसक्यूएल टेबल-वैल्यूड फंक्शन्स
Transact-SQL TVF निम्न में से एक हो सकता है:
- इनलाइन टेबल-वैल्यूड फंक्शन (ITVF)
- जब आप ITVF बनाते हैं, तो आप फ़ंक्शन की परिभाषा
RETURNS TABLE
से शुरू करते हैं , और बाद मेंSELECT
स्टेटमेंट रिटर्न टेबल की संरचना को परिभाषित करता है। - मल्टी-स्टेटमेंट टेबल-वैल्यूड फंक्शन (MSTVF)
- एक बहु-कथन तालिका-मूल्यवान फ़ंक्शन में कई कथन हो सकते हैं, जिसके परिणाम एक चर में सहेजे जाते हैं जिसे आप फ़ंक्शन की शुरुआत में घोषित करते हैं। जब आप ऐसा करते हैं, तो आप वापसी तालिका की संरचना को स्पष्ट रूप से निर्दिष्ट करते हैं।
CLR तालिका-मूल्यवान कार्य
सीएलआर के नजरिए से, सिंटैक्स टी-एसक्यूएल आईटीवीएफ के समान है, लेकिन थोड़ा अलग है। आप वापसी तालिका की संरचना को स्पष्ट रूप से निर्दिष्ट करते हैं, लेकिन आप वापसी चर घोषित नहीं करते हैं।
CLR तालिका-मूल्यवान फ़ंक्शन Microsoft .NET Framework असेंबली में किसी वर्ग पर विधियों के रूप में कार्यान्वित किए जाते हैं।
सीएलआर टीवीएफ के अधिक विस्तृत अवलोकन के लिए, सीएलआर टेबल-वैल्यूड फंक्शंस के लिए माइक्रोसॉफ्ट के दस्तावेज देखें।
उदाहरण 1 - इनलाइन टेबल-वैल्यूड फंक्शन
इनलाइन तालिका-मूल्यवान फ़ंक्शन बनाने के लिए उपयोग किए जाने वाले टी-एसक्यूएल कोड का एक उदाहरण यहां दिया गया है।
CREATE FUNCTION dbo.udf_CatsByName_ITVF(@CatName varchar(70) ) TABLEASRETURN लौटाता है (CateId, CatName, dbo से फोन चुनें।हम कह सकते हैं कि यह एक इनलाइन टेबल-वैल्यू फ़ंक्शन है, क्योंकि यह रिटर्न टेबल की संरचना को निर्दिष्ट नहीं करता है। यह बस बताता है
RETURNS TABLE
, फिरSELECT
. पर निर्भर करता है रिटर्न टेबल की संरचना निर्धारित करने के लिए स्टेटमेंट।इस मामले में, फ़ंक्शन को तर्क के रूप में बिल्ली के नाम को पारित करने की आवश्यकता होती है।
स्कीमा बाइंडिंग और एन्क्रिप्शन जैसे विकल्पों को जोड़ने के उदाहरणों के लिए इनलाइन टेबल-वैल्यूड फंक्शन बनाएं देखें।
स्कीमा बाइंडिंग आमतौर पर एक अच्छा विचार है, क्योंकि यह अंतर्निहित ऑब्जेक्ट्स में किए जा रहे किसी भी प्रतिकूल परिवर्तन को रोक देगा जो फ़ंक्शन संदर्भ देता है।
उदाहरण 2 - मल्टी-स्टेटमेंट टेबल-वैल्यूड फंक्शन
यदि हम चाहते हैं कि यह एक बहु-कथन तालिका-मूल्यवान फ़ंक्शन हो, तो हम फ़ंक्शन को कैसे लिखेंगे।
CREATE FUNCTION udf_CatsByName_MSTVF(@CatName varchar(70) ) @cats टेबल लौटाता है ( CatId int, CatName varchar(70), Phone varchar(10) )ASBEGIN INSERT INTO @cats Select CatId, CatName.Cats W से dbo कैटनाम =@ कैटनाम; RETURN;END;GOइस मामले में, हम तालिका . प्रकार के एक चर का उपयोग करते हैं
@cats
called कहा जाता है और हम वापसी तालिका की संरचना को स्पष्ट रूप से निर्दिष्ट करते हैं। क्वेरी परिणाम उस वेरिएबल में संग्रहीत किए जाते हैं, जो तब फ़ंक्शन लागू होने पर वापस कर दिया जाता है।यह उदाहरण MSTVFs को अधिक न्याय नहीं देता है, क्योंकि मैं केवल एक ही कथन शामिल करता हूं। MSTVFs का मुख्य बिंदु यह है कि आप कई कथनों को शामिल कर सकते हैं, और आप उन कथनों के आउटपुट को रिटर्न वेरिएबल में जोड़ सकते हैं।
एकाधिक कथनों का उपयोग करने के उदाहरण के लिए मल्टी-स्टेटमेंट टेबल-वैल्यूड फ़ंक्शन बनाएं, साथ ही स्कीमा बाइंडिंग और एन्क्रिप्शन जैसे विकल्पों को जोड़ने के उदाहरण देखें।
उदाहरण 3 - हमारे टेबल-वैल्यूड फंक्शन्स से डेटा चुनें
इसलिए अब जब हमने अपने फंक्शन बना लिए हैं, तो हम
SELECT
. का उपयोग करके उन दोनों को इनवाइट कर सकते हैं बयान।चुनें * udf_CatsByName_ITVF('Tom'); से चुनें * udf_CatsByName_MSTVF('Tom');सेपरिणाम:
+-----------+-----------+---------------+| कैट आईडी | कैटनाम | फोन ||-----------+---------------+---------------|| 3 | टॉम | 7871237652 |+------------+----------+---------------+(1 पंक्ति प्रभावित)+---------- ---+----------+---------------+| कैट आईडी | कैटनाम | फोन ||-----------+---------------+---------------|| 3 | टॉम | 7871237652 |+------------+----------+---------------+(1 पंक्ति प्रभावित)ITVF और MSTVF दोनों को एक ही सिंटैक्स का उपयोग करके लागू किया गया और दोनों ने एक ही परिणाम दिया।
टेबल-वैल्यूड फंक्शन्स को इनवाइट करना
तालिका-मूल्यवान कार्यों को लागू किया जा सकता है जहां तालिका अभिव्यक्तियों की अनुमति है
FROM
. मेंSELECT
. का खंड ,INSERT
,UPDATE
, याDELETE
बयान।इसका मतलब है कि आप तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा का चयन कर सकते हैं, डेटा सम्मिलित कर सकते हैं, डेटा अपडेट कर सकते हैं और यहां तक कि डेटा हटा भी सकते हैं।
यहां ऐसे लेख हैं जो हर एक को प्रदर्शित करते हैं:
- तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा का चयन करें
- तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा अपडेट करें
- तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा सम्मिलित करें
- तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा हटाएं