कंप्यूटरडेटाबेस

एसक्यूएल संग्रहित प्रक्रिया: बनाना और प्रयोग करना

संग्रहीत कार्यविधियाँ एसक्यूएल एक निष्पादन योग्य प्रोग्राम मॉड्यूल है जिसे डेटाबेस में विभिन्न वस्तुओं के रूप में संग्रहीत किया जा सकता है। दूसरे शब्दों में, यह एक ऐसी वस्तु है जिसमें एसक्यूएल स्टेटमेंट शामिल हैं। अच्छे प्रदर्शन प्राप्त करने के लिए इन संग्रहीत कार्यविधियों को एप्लिकेशन क्लाइंट में निष्पादित किया जा सकता है। इसके अलावा, ऐसी वस्तुओं को अक्सर अन्य परिदृश्यों से या किसी अन्य अनुभाग से भी कहा जाता है

परिचय

बहुत से लोग मानते हैं कि वे विभिन्न उच्च-स्तरीय प्रोग्रामिंग भाषाओं (एमएस एसक्यूएल को छोड़कर क्रमशः) की प्रक्रियाओं के समान हैं। शायद, यह वास्तव में ऐसा है उनके समान पैरामीटर हैं, वे समान मूल्य दे सकते हैं। इसके अलावा, कई मामलों में वे संपर्क में हैं उदाहरण के लिए, वे डेटाबेस डीडीएल और डीएमएल, साथ ही साथ यूजर फ़ंक्शंस (कोड नाम - यूडीएफ) के साथ जोड़ दिए जाते हैं।

वास्तव में, एसक्यूएल संग्रहित प्रक्रियाओं में ऐसे कई फायदे हैं जो उन्हें समान प्रक्रियाओं से अलग करते हैं। सुरक्षा, प्रोग्रामिंग, उत्पादकता की परिवर्तनशीलता - ये सभी उपयोगकर्ताओं को डेटाबेस के साथ काम कर रहे हैं, अधिक से अधिक प्रक्रियाओं की लोकप्रियता का चरम 2005-2010 में हुआ, जब माइक्रोसॉफ्ट ने एसक्यूएल सर्वर मैनेजमेंट स्टूडियो नामक कार्यक्रम जारी किया। इसकी मदद से, डेटाबेस के साथ काम करना बहुत आसान, अधिक व्यावहारिक और अधिक सुविधाजनक बन गया है साल दर साल सूचना हस्तांतरण की इस पद्धति ने प्रोग्रामरों के बीच लोकप्रियता अर्जित की। आज, एमएस एसक्यूएल सर्वर बिल्कुल परिचित कार्यक्रम है, जो उपयोगकर्ताओं के लिए "एक्सेल" के साथ "डेटाबेस" के साथ बढ़ता हुआ है।

जब किसी प्रक्रिया को कहा जाता है, तो इसे बिना किसी अनावश्यक प्रक्रियाओं और उपयोगकर्ता हस्तक्षेप के तुरंत ही सर्वर द्वारा संसाधित किया जाता है। इसके बाद, आप जानकारी के साथ कोई भी कार्य कर सकते हैं: हटाने, निष्पादन, परिवर्तन यह सब डीडीएल ऑपरेटर की जिम्मेदारी है, जो अकेले वस्तुओं के सबसे जटिल प्रसंस्करण करता है। और यह सब बहुत तेज़ी से होता है, और सर्वर वास्तव में लोड नहीं होता है। यह गति और निष्पादन आपको उपयोगकर्ता से बड़ी मात्रा में जानकारी को सर्वर पर और इसके विपरीत स्थानांतरित करने की अनुमति देता है।

जानकारी के साथ इस तकनीक के काम को लागू करने के लिए, कई प्रोग्रामिंग भाषाएं हैं उदाहरण के लिए, ओआरएसीएल डाटाबेस मैनेजमेंट सिस्टम से पीएल / एसक्यूएल, इंटर बेस और फायरबर्ड सिस्टम में पीएसकल, साथ ही साथ क्लासिक "माइक्रोसॉफ्ट ट्रांसएक्ट-एसक्यूएल" शामिल हैं। उन सभी को संग्रहित प्रक्रियाओं को बनाने और निष्पादित करने के लिए डिज़ाइन किया गया है, जो बड़े डेटाबेस संचालकों में बड़े एल्गोरिदम का उपयोग करने की अनुमति देता है। यह भी उन लोगों के लिए जरूरी है जो तृतीय पक्षों द्वारा अनधिकृत पहुंच से सभी वस्तुओं की रक्षा के लिए और, निश्चित रूप से, कुछ डेटा बनाते हैं, बदलते या हटाते हैं।

उत्पादकता

ये डेटाबेस ऑब्जेक्ट्स को विभिन्न तरीकों से प्रोग्राम किया जा सकता है। यह उपयोगकर्ताओं को इस्तेमाल की जाने वाली विधि का चयन करने की अनुमति देता है, जो कि सबसे उपयुक्त होगा, जो समय और प्रयास बचाता है। इसके अलावा, प्रक्रिया ही संसाधित होती है, जो सर्वर और उपयोगकर्ता के बीच आदान-प्रदान करने के लिए खर्च किए गए विशाल समय से बचा जाता है। साथ ही, मॉड्यूल को किसी भी समय वांछित दिशा में पुनर्प्रक्रमित और बदला जा सकता है। विशेष रूप से यह गति को ध्यान देने योग्य है, जिसके साथ एसक्यूएल संग्रहीत कार्यप्रणाली शुरू होती है: यह प्रक्रिया दूसरों की तुलना में तेज़ है, इसके समान, जो इसे सुविधाजनक और बहुमुखी बनाता है

सुरक्षा

इस प्रकार की सूचना प्रसंस्करण इसी तरह की प्रक्रियाओं से भिन्न है, इसमें वृद्धि की सुरक्षा की गारंटी देता है इस तथ्य से यह सुनिश्चित किया जाता है कि प्रक्रियाओं के लिए अन्य उपयोगकर्ताओं की पहुंच को पूरी तरह से और पूरी तरह से बाहर रखा जा सकता है। यह व्यवस्थापक को जानकारी के अवरोधन या डेटाबेस से अनधिकृत पहुंच के डर के बिना स्वतंत्र रूप से उनके साथ संचालन करने की अनुमति देगा।

डेटा स्थानांतरण

एसक्यूएल संग्रहीत कार्यविधि और ग्राहक अनुप्रयोग के बीच का संबंध पैरामीटर और रिटर्न मूल्यों का उपयोग है। बाद में डेटा को संग्रहित प्रक्रिया में स्थानांतरित करने की आवश्यकता नहीं है, हालांकि यह जानकारी (मुख्य रूप से उपयोगकर्ता के अनुरोध पर) और एसक्यूएल के लिए संसाधित है। संग्रहीत कार्यविधि के कार्य को पूरा करने के बाद, यह डाटा पैकेट को वापस भेजता है (लेकिन फिर से, अगर वांछित) उस अनुप्रयोग को जिसे इसे कहा जाता है, विभिन्न तरीकों का उपयोग कर जिसे संग्रहित प्रक्रिया एसक्यूएल को कॉल के रूप में इस्तेमाल किया जा सकता है, और उदाहरण के लिए:

- आउटपुट पैरामीटर का उपयोग करके डेटा ट्रांसफर ;

- रिटर्न ऑपरेटर का उपयोग करके डेटा ट्रांसफर;

- चयन ऑपरेटर का उपयोग करके डेटा स्थानांतरण।

अब देखते हैं कि यह प्रक्रिया अंदर से कैसे दिखती है।

1. SQL में एक EXEC संग्रहीत कार्यप्रणाली बनाएँ

आप एमएस एसक्यूएल (मैनेजमेंट स्टूडियो) में एक प्रक्रिया बना सकते हैं। प्रक्रिया बनाई जाने के बाद, यह एक प्रोग्राम डेटाबेस नोड में स्थानांतरित किया जाएगा जिसमें निर्माण प्रक्रिया ऑपरेटर द्वारा की जाती है। निष्पादित करने के लिए, SQL संग्रहित प्रक्रियाएं एक EXEC प्रक्रिया का उपयोग करती हैं जिसमें ऑब्जेक्ट का नाम शामिल होता है

जब कोई प्रक्रिया बनाते हैं, तो उसका नाम पहले दिखाई देता है, उसके बाद उसे एक या अधिक पैरामीटर निर्दिष्ट किया जाता है। पैरामीटर वैकल्पिक हो सकते हैं पैरामीटर (के) के बाद, यह है कि, प्रक्रिया का शरीर लिखा जाता है, आपको कुछ आवश्यक परिचालन करने की आवश्यकता है।

बात यह है कि शरीर में उसमें स्थित स्थानीय वैरिएबल हो सकते हैं, और प्रक्रियाओं के संबंध में इन चर स्थानीय भी हैं। दूसरे शब्दों में, वे केवल माइक्रोसॉफ्ट एसक्यूएल सर्वर प्रक्रिया के शरीर के अंदर ही देखे जा सकते हैं । संग्रहित प्रक्रियाओं को स्थानीय माना जाता है।

इसलिए, एक प्रक्रिया बनाने के लिए, हमें एक प्रक्रिया नाम और कम से कम एक पैरामीटर की आवश्यकता है जैसे कि प्रक्रिया निकाय। ध्यान दें कि इस मामले में एक उत्कृष्ट विकल्प क्लासिफायरफ़ाइल में स्कीमा नाम के साथ एक प्रक्रिया बनाने और निष्पादित करना है।

प्रक्रिया बॉडी में किसी भी प्रकार के एसक्यूएल स्टेटमेंट हो सकते हैं, उदाहरण के लिए, जैसे टेबल बनाना, एक या एक से अधिक तालिका पंक्तियों को सम्मिलित करना, डाटाबेस के प्रकार और प्रकृति को सेट करना आदि। फिर भी, इस प्रक्रिया के शरीर में कुछ कार्यों के निष्पादन को प्रतिबंधित करता है। कुछ महत्वपूर्ण सीमाएं नीचे सूचीबद्ध हैं:

- शरीर को किसी भी अन्य संग्रहित प्रक्रिया नहीं बनानी चाहिए;

- शरीर को वस्तु का एक गलत विचार नहीं बनाना चाहिए;

- शरीर को किसी भी ट्रिगर नहीं बनाना चाहिए।

2. प्रक्रिया के शरीर में एक चर सेट

आप शरीर की प्रक्रिया के लिए स्थानीय चर बना सकते हैं, और फिर वे विशेष रूप से प्रक्रिया के शरीर के अंदर स्थित होंगे। एक अच्छा अभ्यास है संग्रहित प्रक्रिया के शरीर की शुरुआत में चर बनाने के लिए। लेकिन आप इस ऑब्जेक्ट के शरीर में कहीं भी चर निर्धारित कर सकते हैं।

कभी-कभी आप देखेंगे कि कई चर एक पंक्ति में सेट हैं, और प्रत्येक चर पैरामीटर को अल्पविराम से अलग किया जाता है। यह भी ध्यान रखें कि चर में @ उपसर्ग है प्रक्रिया के शरीर में, आप एक चर सेट कर सकते हैं जहां आप चाहते हैं उदाहरण के लिए, चर @ NAME1 को प्रक्रिया निकाय के अंत के करीब घोषित किया जा सकता है। घोषित वैरिएबल के मूल्य को असाइन करने के लिए, व्यक्तिगत डेटा का एक सेट उपयोग किया जाता है। स्थिति के विपरीत जब एक से अधिक चर एक पंक्ति में घोषित किया गया है, तो इस स्थिति में व्यक्तिगत डेटा का केवल एक सेट का उपयोग किया जाता है।

अक्सर, उपयोगकर्ता प्रश्न पूछते हैं: "प्रक्रिया के शरीर में एक ऑपरेटर में कई मान कैसे असाइन करें?" ठीक है। सवाल दिलचस्प है, लेकिन आप जितना सोचते हैं उतना आसान है। उत्तर: जोड़े का प्रयोग करें जैसे "चुनें Var = value" आप इन युग्मों को कॉमा से अलग कर सकते हैं।

3. एसक्यूएल संग्रहित प्रक्रिया बनाना

विभिन्न उदाहरणों में, लोग दिखाते हैं कि एक साधारण संग्रहीत कार्यविधि कैसे तैयार करें और इसे निष्पादित करें। हालांकि, प्रक्रिया ऐसी मापदंडों को ले सकती है कि कॉलिंग प्रक्रिया में उसके पास के मान होंगे (लेकिन हमेशा नहीं)। यदि वे मेल खाते हैं, तो संबंधित प्रक्रियाएं शरीर के अंदर शुरू होती हैं। उदाहरण के लिए, यदि आप एक ऐसी प्रक्रिया बनाते हैं जो कॉलर से एक शहर और क्षेत्र लेगा और संबंधित शहर और क्षेत्र से कितने लेखकों से जुड़ा हुआ है, इस बारे में डेटा वापस करेगा। प्रक्रिया डेटाबेस लेखक तालिकाओं से पूछेगा, उदाहरण के लिए, पब, इस लेखक की गणना करने के लिए। इन डेटाबेस को प्राप्त करने के लिए, उदाहरण के लिए, Google एसक्यूएल स्क्रिप्ट को SQL2005 पृष्ठ से लोड करता है।

पिछले उदाहरण में, प्रक्रिया दो पैरामीटर लेती है, जो अंग्रेजी में पारंपरिक रूप से @ स्थिति और @ सीटी कहा जाता है। डेटा प्रकार अनुप्रयोग में परिभाषित प्रकार से मेल खाती है। इस प्रक्रिया के शरीर में कुल चर लेखक कुल लेखकों (सभी लेखकों) हैं, और यह चर उनकी संख्या को प्रदर्शित करने के लिए उपयोग किया जाता है। फिर क्वेरी का चयन करने के लिए एक खंड है, जो सभी मायने रखता है। अंत में, प्रिंट ऑप्टेर का उपयोग करके आउटपुट विंडो में गणना मूल्य प्रदर्शित होता है।

SQL में संग्रहीत कार्यविधि को कैसे निष्पादित करें

प्रक्रिया को करने के दो तरीके हैं पहला रास्ता दिखाता है पैरामीटर्स पैरामीटर के रूप में, कॉमा से अलग होने की सूची प्रक्रिया नाम के बाद निष्पादित की जाती है। मान लीजिए हमारे पास दो मान हैं (जैसा कि पिछले उदाहरण में है)। इन मानों को @स्थेट और @ सीटी प्रक्रिया पैरामीटर के चर का उपयोग करके एकत्र किया जाता है पैरामीटर पारित करने के इस तरीके में आदेश महत्वपूर्ण है इस विधि को तर्क के क्रमिक हस्तांतरण कहा जाता है। दूसरी विधि में, पैरामीटर पहले ही सीधे सौंपा गया है, और इस मामले में यह क्रम महत्वपूर्ण नहीं है। यह दूसरी विधि नामित तर्कों के हस्तांतरण के रूप में जाना जाता है।

प्रक्रिया विशिष्ट से कुछ हद तक भटक सकती है सब कुछ पिछली उदाहरण के समान है, लेकिन यहां केवल पैरामीटर स्थानांतरित किए जाते हैं। यही है, @सिटी पैरामीटर पहले संग्रहीत है, और @स्टेट डिफ़ॉल्ट मान के बगल में जमा है। डिफ़ॉल्ट सेटिंग आमतौर पर अलग होती है संग्रहित एसक्यूएल प्रक्रियाएं सरल पैरामीटर के रूप में पास करती हैं। इस स्थिति में, शर्त के तहत, पैरामीटर "यूटी" डिफ़ॉल्ट मान "सीए" को बदल देता है दूसरे निष्पादन में, @ सीटी पैरामीटर के लिए केवल एक तर्क मान दिया जाता है, और @ स्थिति पैरामीटर "CA" का डिफ़ॉल्ट मान लेता है अनुभवी प्रोग्रामर सलाह देते हैं कि डिफ़ॉल्ट रूप से सभी चर पैरामीटर्स की सूची के अंत के करीब स्थित हैं। अन्यथा, निष्पादन संभव नहीं है, और फिर आपको नामित तर्कों के हस्तांतरण के साथ काम करना चाहिए, जो अब और अधिक कठिन है

4. SQL सर्वर संग्रहित प्रक्रिया: वापसी पद्धतियां

संग्रहीत प्रक्रिया में डाटा भेजने के तीन महत्वपूर्ण तरीके हैं वे नीचे सूचीबद्ध हैं:

- संग्रहीत कार्यविधि का मूल्य लौटाएं;

- संग्रहित प्रक्रिया पैरामीटर का आउटपुट;

- संग्रहित प्रक्रियाओं में से एक का चयन करें

4.1 एसक्यूएल संग्रहित प्रक्रियाओं के मूल्यों को लौटाना

इस तकनीक में, प्रक्रिया स्थानीय वैरिएबल के लिए एक मान प्रदान करती है और इसे वापस करती है। प्रक्रिया सीधे एक निरंतर मान भी वापस कर सकती है। निम्नलिखित उदाहरण में, हमने एक ऐसी प्रक्रिया बनाई जो लेखकों की कुल संख्या देता है। यदि आप इस प्रक्रिया को पिछले वाले की तुलना करते हैं, तो आप देख सकते हैं कि मुद्रण के लिए मूल्य विपरीत एक द्वारा प्रतिस्थापित किया गया है।

अब देखते हैं कि कैसे प्रक्रिया को निष्पादित करें और आउटपुट को लौटाया गया मूल्य। प्रक्रिया के निष्पादन के लिए वेरिएबल और प्रिंटिंग की आवश्यकता होती है, जो सभी प्रक्रियाओं के बाद किया जाता है। नोट करें कि प्रिंट स्टेटमेंट के बजाय, आप चुनें ऑपरेटर का उपयोग कर सकते हैं, उदाहरण के लिए, @RetValue चुनें, और आउटपुटवॉल्यू भी।

4.2 SQL संग्रहीत कार्यविधि पैरामीटर से बाहर निकलें

प्रतिक्रिया मान का उपयोग एक चर को वापस करने के लिए किया जा सकता है, जो हमने पिछले उदाहरण में देखा था। आउटपुट पैरामीटर का उपयोग करना कॉलिंग पार्टी को एक या अधिक वैरिएबल वैल्यू भेजने की सुविधा देता है। प्रक्रिया बनाते समय आउटपुट पैरामीटर को इस कीवर्ड के रूप में "आउटपुट" नामित किया जाता है यदि पैरामीटर निर्गम पैरामीटर के रूप में निर्दिष्ट किया गया है, तो प्रक्रिया ऑब्जेक्ट को इसके लिए एक मान निर्दिष्ट करना होगा। संग्रहित एसक्यूएल प्रक्रियाओं, जिनमें से उदाहरण नीचे देखा जा सकता है, फिर सारांश जानकारी के साथ वापस आ जाता है।

हमारे उदाहरण में, दो आउटपुट नाम हैं: @TotalAuthors और @TotalNoContract वे मापदंडों की सूची में निर्दिष्ट हैं। इन चर प्रक्रियाओं के शरीर के भीतर मूल्यों को असाइन करते हैं। जब हम आउटपुट पैरामीटर का उपयोग करते हैं, तो कॉलर प्रक्रिया बॉडी के अंदर सेट मान देख सकता है।

इसके अलावा, पिछले परिदृश्य में, दो चर को घोषित करने के लिए घोषित किया जाता है जो कि माउज़ एसक्यूएल सर्वर की संग्रहित प्रक्रियाओं को आउटपुट पैरामीटर में सेट करता है। तब प्रक्रिया "सीए" पैरामीटर के सामान्य मूल्य की आपूर्ति करके किया जाता है निम्नलिखित पैरामीटर आउटपुट हैं, और इसलिए, घोषित चर को स्थापित क्रम में प्रेषित किया जाता है। ध्यान दें कि जब व्हेरिएबल्स निकलते हैं, तो आउटपुट कीवर्ड भी यहां निर्दिष्ट किया जाता है। प्रक्रिया सफलतापूर्वक पूरा होने के बाद, आउटपुट पैरामीटर द्वारा दिए गए मान संदेश विंडो पर प्रदर्शित होते हैं।

4.3 SQL संग्रहित प्रक्रियाओं में से एक का चयन करें

इस तकनीक का इस्तेमाल डेटा सारणी (रिकार्डसेट) के रूप में मानों का एक सेट वापस करने के लिए किया जाता है, जिसे कॉलिंग संग्रहीत कार्यविधि में किया जाता है। इस उदाहरण में, @AuthId पैरामीटर का उपयोग करते हुए लौटे हुए रिकॉर्ड्स को फ़िल्टर करके एथिड पैरामीटर के साथ SQL संग्रहीत कार्यप्रणाली लेखक तालिका को क्वेरी करती है। चुने ऑपरेटर निर्णय लेता है कि कॉलिंग संग्रहीत कार्यविधि में क्या लौटा जाना चाहिए। एक संग्रहीत कार्यविधि निष्पादित करते समय, AuthId वापस पारित हो जाता है ऐसी प्रक्रिया यहां हमेशा केवल एक रिकॉर्ड या कोई भी नहीं लौटाती है। लेकिन संग्रहित प्रक्रिया में एक से अधिक रिकॉर्ड की वापसी पर कोई प्रतिबंध नहीं है। ऐसे उदाहरणों को ढूंढना अक्सर संभव होता है जिसमें गणना की गई वैरिएबल की भागीदारी के साथ चुने गए मापदंडों का उपयोग करके डेटा की वापसी कई सारांश मूल्यों को उपलब्ध कराती है।

अंत में

एक संग्रहीत कार्यविधि एक काफी गंभीर सॉफ़्टवेयर मॉड्यूल है जो रिटर्न या ट्रांसमिट करता है, और क्लाइंट एप्लिकेशन के माध्यम से आवश्यक चर को भी स्थापित करता है। क्योंकि संग्रहीत कार्यविधि को सर्वर पर ही निष्पादित किया जाता है, सर्वर और क्लाइंट एप्लिकेशन (कुछ गणनाओं के लिए) के बीच बड़ी मात्रा में डेटा विनिमय से बचा जा सकता है। यह आपको एसक्यूएल सर्वर पर लोड को कम करने की अनुमति देता है, जो निश्चित रूप से, अपने धारकों को हाथ में जाता है उप-प्रजातियों में से एक टी एसक्यूएल संग्रहित प्रक्रियाओं है, तथापि, उन लोगों द्वारा अध्ययन करने की आवश्यकता है जो प्रभावी डाटाबेस बना रहे हैं। वहां एक बड़ी, बड़ी संख्या में बारीकियों भी हैं जो संग्रहित प्रक्रियाओं का अध्ययन करने में उपयोगी हो सकती हैं, लेकिन पेशेवरों सहित प्रोग्रामिंग में शामिल होने की योजना के लिए यह अधिक है।

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 hi.delachieve.com. Theme powered by WordPress.