Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Databases
Code

MySQL 5 में Stored Procedures का एक परिचय

by
Length:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

MySQL 5 बहुत सारी नयी विशेषताएं (features) ले कर आया है - stored procedures इनमे से एक अत्यधिक महत्वपूर्ण विशेषता है. इस tutorial में, हम, ये क्या है, और यह आपकी जिंदगी कैसे आसान बना सकता है, इस पर केंद्रित (focus) करेंगे.


परिचय

" stored routine SQL स्टेटमेंट्स का एक समूह (set) है जो की सर्वर (server) में स्टोर (store) किया जा सकता है."

Stored procedure बार बार होने वाले कार्यों को encapsulate करने का एक तरीका है. वे चर घोषणापत्र, प्रवाह नियंत्रण और अन्य उपयोगी प्रोग्रामिंग तकनीकों के लिए अनुमति देते हैं।

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

फायदे

  • दूसरी एप्लीकेशन के साथ लॉजिक को बांटना. संग्रहित प्रक्रियाएं कार्यप्रणाली को समझाती हैं; यह सुनिश्चित करता है कि डेटा एक्सेस और हेरफेर विभिन्न अनुप्रयोगों के बीच सुसंगत हैं।
  • यूजर को डाटा टेबल से पृथक (isolate) करना. इससे आपको संग्रहित प्रक्रियाओं तक पहुँच प्रदान करने की क्षमता मिलती है जो डेटा को हेरफेर करते हैं लेकिन सीधे टेबल पर नहीं
  • सुरक्षा (security) की युक्ति (mechanism) प्रदान करना. पूर्व आइटम को ध्यान में रखते हुए, यदि आप केवल संग्रहीत कार्यविधियों का इस्तेमाल करते हुए डेटा को एक्सेस कर सकते हैं, तो कोई भी डेलीटे SQL कथन निष्पादित नहीं कर सकता और आपके डेटा को मिटा सकता है।
  • प्रदर्शन को सुधारना क्योंकि ये नेटवर्क ट्रैफिक को कम करता है. Stored procedure के साथ, एक से अधिक कॉल (multiple calls) मिलकर एक हो सकती है.

नुक्सान

  • डेटाबेस सर्वर पर लोड में वृद्धि - अधिकांश कार्य सर्वर साइड पर किया जाता है, और क्लाइंट साइड पर कम होता है।
  • एक बहुत अच्छा सीखने का तरीका है. संग्रहीत कार्यविधियों को लिखने के लिए आपको MySQL कथन का सिंटैक्स सीखना होगा।
  • आप दो अलग-अलग जगहों पर अपने आवेदन का तर्क दोहरा रहे हैं: अपने सर्वर कोड और संग्रहीत कार्यविधियाँ कोड, जिससे चीज़ों को बनाए रखने में थोड़ी अधिक मुश्किल हो सकती है।
  • किसी भिन्न डेटाबेस प्रबंधन प्रणाली (DB2, SQL Server, आदि) में माइग्रेट करना संभवतः अधिक कठिन हो सकता है

यह टूल जो मैं इस ट्यूटोरियल में काम कर रहा हूं, MySQL क्वेरी ब्राउज़र, डेटाबेस इंटरैक्शन के लिए बहुत ही मानक है। MySQL का कमांड लाइन टूल एक और बहुत अच्छा विकल्प है. मैं इस पर ध्यान देता हूं क्योंकि लोकप्रिय phpMyAdmin संग्रहीत कार्यविधि निष्पादन का समर्थन नहीं करता है।

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


पद 1 - Delimeter को चुने

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


पद 2 - Stored Procedure के साथ कार्य कैसे करें

एक stored Procedure को बनाना 

स्टेटमेंट का पहला हिस्सा procedure को बनता है. अगले खंड प्रक्रिया की वैकल्पिक विशेषताओं को परिभाषित करता है। फिर आपके नाम और अंत में शरीर या दिनचर्या कोड है।

संग्रहित प्रक्रिया नाम केस असंवेदनशील हैं, और आप एक ही नाम के साथ प्रक्रियाएं नहीं बना सकते। एक प्रक्रिया निकाय के अंदर, आप डेटाबेस-हेरफेर बयान नहीं डाल सकते।

procedure की चार विशेषताएं हैं:

  • भाषा: पोर्टेबिलिटी प्रयोजनों के लिए; डिफ़ॉल्ट मान एसक्यूएल है
  • निर्धारण: यदि प्रक्रिया हमेशा एक ही परिणाम देता है, तो उसी इनपुट को दिया जाता है। यह प्रतिकृति और लॉगिंग उद्देश्य के लिए है डिफ़ॉल्ट मान नहीं है निर्धारकीय
  • एसक्यूएल सुरक्षा: कॉल समय पर, उपयोगकर्ता के विशेषाधिकारों की जांच करें। INVOKER उपयोगकर्ता जो प्रक्रिया को कॉल करता है DEFINER प्रक्रिया का निर्माता है DEFINER डिफ़ॉल्ट वैल्यू है.
  • टिप्पणी: दस्तावेजीकरण प्रयोजनों के लिए; डिफ़ॉल्ट मान "" है

Stored Procedure को कॉल करना

किसी प्रक्रिया को कॉल करने के लिए, आपको केवल कॉल शब्द, प्रक्रिया के नाम के बाद, और तब कोष्ठकों को दर्ज करने की आवश्यकता होती है, जिसमें उन सभी पैरामीटर (वेरिएबल या मान) शामिल हैं। कोष्ठक (Parentheses) अनिवार्य है.

Stored Procedure को संशोधित (modify) करना

MySQL एक नियमित रूप से संशोधित करने के लिए एक वैकल्पिक प्रक्रिया बयान प्रदान करता है, लेकिन केवल कुछ विशेषताओं को बदलने की क्षमता के लिए अनुमति देता है यदि आपको शरीर या मापदंडों को बदलने की जरूरत है, तो आपको प्रक्रिया को छोड़ना और पुनः बनाना होगा।

Stored Procedure को हटाना

यह एक सरल कमान है। यदि मौजूदा नियम में कोई त्रुटि नहीं होती है, तो यह प्रक्रिया मौजूद नहीं है।


पद 3 - Paramters

आइए देखें कि आप एक संग्रहीत कार्यविधि के भीतर पैरामीटर कैसे परिभाषित कर सकते हैं।

  • CREATE PROCEDURE proc1(): Parameter की लिस्ट खाली है
  • CREATE PROCEDURE proc1 (IN varname DATA-TYPE): एक आउटपुट parameter IN शब्द वैकल्पिक है क्योंकि पैरामीटर डिफ़ॉल्ट रूप से IN (input) ही होता है.
  • CREATE PROCEDURE proc1 (OUT varname DATA-TYPE): एक आउटपुट parameter
  • CREATE PROCEDURE proc1 (INOUT varname DATA-TYPE): एक parameter जो की दोनों इनपुट और आउटपुट है.

बेशक, आप विभिन्न प्रकारों के साथ परिभाषित कई मापदंडों को परिभाषित कर सकते हैं।

IN का उदाहरण

OUT का उदाहरण

INOUT का उदाहरण


पद 4 - Variables

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

निम्नलिखित syntax की मदद से variable को घोषित (declare) करें:

आईये कुछ variables को घोषित (declare) करें:

variables के साथ कार्य करना

एक बार वेरिएबल घोषित कर दिए गए हैं, तो आप उन्हें SET या SELECT कमांड का प्रयोग करके मूल्य निर्दिष्ट कर सकते हैं:


पद 5 - Flow Control Structures

संग्रहीत कार्यक्रमों के भीतर प्रवाह नियंत्रण के लिए MySQL IF, CASE, ITERATE, छुट्टी छोड़ें, WHILE और REPEAT का समर्थन करता है। हम अगर IF, केस और WHILE विशेष रूप से उपयोग करने के तरीके की समीक्षा करने जा रहे हैं, क्योंकि ये दिनचर्या में सबसे अधिक इस्तेमाल होने वाले विवरण हैं।

IF statement

IF स्टेटमेंट के साथ, हम उन कार्यों को संभाल सकते हैं जिनमें स्थितियां शामिल हैं:

CASE statement

केस स्टेटमेंट शर्तों की जांच करने और उपयुक्त रास्ते लेने का एक और तरीका है। यह एक से अधिक IF स्टेटमेंट्स को बदलने का एक बहुत अच्छा तरीका है. बयान को दो अलग-अलग तरीकों से लिखा जा सकता है, जिसमें कई स्थितियों को संभालने के लिए महान लचीलापन प्रदान किया जा सकता है।

या:

WHILE statement

तकनीकी रूप से तीन मानक छोर हैं: WHILE loops, लूप लूप, और दोहराना लूप। आपके पास प्रोग्रामिंग तकनीकों के "डार्थ वाडर" का उपयोग करके एक लूप बनाने का विकल्प भी है: GOTO कथन Loop के एक्शन में होने के इस उदाहरण की जांच करें:


पद 6 - Cursor

कर्सर का उपयोग क्वेरी से लौटने वाली पंक्तियों के माध्यम से दोहराव और प्रत्येक पंक्ति को संसाधित करने के लिए किया जाता है

MySQL stored procedures में cursor को समर्थन (supports) देता है. कर्सर बनाने और उपयोग करने के लिए यहां आवश्यक वाक्यविन्यास का सारांश दिया गया है

इस उदाहरण में, हम cursor का प्रयोग करते हुए कुछ सरल से सञ्चालन (operations) का प्रदर्शन (perform) करेंगे:

कर्सर के पास तीन महत्वपूर्ण गुण हैं जिनकी अनपेक्षित परिणाम से बचने के लिए आपको परिचित होना चाहिए:

  • असुविधाजनक: एक बार खोलने पर, कर्सर इसके स्रोत तालिकाओं में परिवर्तन नहीं दिखाएगा। वास्तव में, MySQL की गारंटी नहीं है कि कर्सर अपडेट हो जाएगा, इसलिए आप इस पर भरोसा नहीं कर सकते।
  • Read Only : Cursors को अपडेट नहीं किया जा सकता.
  • स्क्रॉल नहीं किया जा सकता है: कर्सर केवल एक दिशा में आगे बढ़ सकते हैं, आगे बढ़ सकते हैं, और आप फ़ेचिंग से रिकॉर्ड को नहीं छोड़ सकते।

निष्कर्ष

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

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.