Stored Procedure क्या है - Stored Procedure in SQL in Hindi 


SQL में एक stored procedure SQL statements का पहले से लिखा हुआ समूह होता है जो database में सुरक्षित रहता है।

इसका उपयोग विशिष्ट कार्य हो जैसे data को update करना, results को प्राप्त करना या गणना करने के लिए किया जाता है।

Stored procedures, कई तरीके से मदद करते हैं।
  • इसमें एक ही code को बार-बार लिखने की जरूरत नहीं होती अतः यह समय बचाता है।
  • वे तेजी रन होते हैं क्योंकि database, उन्हे रन करने के लिए बेहतर और तेज तरीका बनाता है।
  • वे सुरक्षा को बढ़ाते हैं क्योंकि केवल चयनित उपयोगकर्ता ही उसे चला सकते हैं। 
  • वे पैरामीटर ले सकते हैं इसका मतलब है कि वे विभिन्न प्रकार के इनपुट के साथ कार्य करते हैं।
  • वे रिजल्ट को लौटते हैं या डेटाबेस में डाटा को बदलते हैं।

Stored Procedure की विशेषताएँ - Characteristics of Stored Procedure in Hindi

Stored procedures के निम्न विशेषताएँ होती है।
  • Stored procedures एक बार compile होता है और तेजी से चलता है।
  • आप बार-बार इसका उपयोग कर सकते हैं।
  • Code को हिस्सों में लिखा जाता है जिससे वह संगठित बना रहता है।
  • आप input values भेज सकते हैं और output प्राप्त कर सकते हैं। 
  • यह data या messages वापस देता है
  • बेहतर योजना के साथ तेजी से चलता है। 
  • एक ही code को बार-बार लिखने की जरूरत नहीं है। 
  • केवल अनुमति प्राप्त उपयोगकर्ता ही उसे चला सकते हैं जिससे यह सुरक्षित बना रहता है। 
  • आप इसका उपयोग IF, loops, और conditions के साथ कर सकते हैं।


Stored Procedure कैसे बनाएं -Create Stored Procedure in SQL in Hindi 

Stored Procedure बनाने के पहले हम एक उदाहरण के माध्यम से इसकी जरूरत को समझते हैं।

मान लीजिए हमारे पास एक Students नामक table है और हमें इस table के लिए बार-बार कुछ information की जरूरत होती है और हम इसके लिए SELECT query का उपयोग बार बार निम्न प्रकार से करते हैं।


SELECT
    StudentID, Name, Age, City
    FROM
        students
    ORDER BY
        Name ASC;

Output:
+-----------+--------+-----+--------+----------
| StudentID  | Name | Age | City |
+-----------+--------+-----+--------+----------
| 104 |        AMAN     | 25 | BALOD |
| 106 |        ANISH    | 21 | DURG    |
| 101 |        JAY         | 20 | DURG    |
| 105 |       RAHUL     | 24 | RAIPUR |
| 102 |        ROHAN   | 24 | RAIPUR |
| 103 |      SOHIT       | 19 | DURG    |
+-----------+--------+-----+--------+------------
अब हमे ऊपर की information को प्राप्त करने के लिए बार बार Select 
query का उपयोग करने की जरूरत नहीं है।

इसके लिए हम एक बार 
Store procedure का निर्माण करेंगे और जरुरत के समय उसे बार बार Call करेंगे


ऊपर के commands को हम निम्न प्रकार से समझते हैं।

1) `DELIMITER //`:
इसका मतलब हम MySQL को कुछ समय के लिए `;` के बदले `//` का उपयोग करने को कहते हैं। 

यह MySQL को पूरे procedure को सही तरीके से पढ़ने में मदद करता है क्योंकि इसके अन्दर बहुत सारे `;` है  और हम नही चाहते कि MySQL गलती से पहले रुक जाएं।

2) `CREATE PROCEDURE' GetAllStudents()`: 
यह  GetAllStudents नाम से एक stored procedure का निर्माण करता है।

 3) `BEGIN ... END`: 
यह Procedure body की शुरुवात और अंत है।

4) `SELECT ...`:
यह students table, से data प्राप्त करता है, जो name से sort किया जाता है।

5) `END//`: 
यह procedure की समाप्ति को बताता है।

6) `DELIMITER ;`: 
यह delimiter को वापस सामान्य `;` में परिवर्तित करता है।



Stored Procedure को Call करें?

हमने GetAllStudents, नाम से ऊपर stored procedure का निर्माण किया है अब हम इसे call करना चाहते हैं तो इसके लिए निम्न command दे।

यह procedure को रन करता है और students की सूची को उनके नाम के अनुसार एक क्रम में दिखाता है जैसे ऊपर दिखाया गया है।

Stored Procedure को एक Parameter के साथ बनाना 

अब हम एक parameter के साथ procedure का निर्माण करेगें जिसमे City parameter के आधार पर Students को Select करेंगे


ऊपर के command में  `GetStudentsByCity()` procedure, विशिष्ट city से students को दिखाता है।

यह students को city name के आधार पर filter करने के लिए`@city` को एक parameter की तरह उपयोग करता है। जो results मिलता है उसे A to Z order में sort किया जाता है।

अब GetStudentsByCity() Procedure को निम्न प्रकार से Call करते है।
ऊपर का command उन students को दिखाता है जो 'DURG' city में रहते हैं।

यदि हम  'RAIPUR' city में रहने वाले students को देखना चाहते हैं तो निम्न कमांड दे 


Stored Procedure  को Delete करना

यदि हम पहले से बने Procedure (GetStudentBtCity) को हटाना चाहते हैं तो इसके लिए निम्न command दे।



Stored Procedure के लाभ - Advantages of Stored Procedure in Hindi 

Stored procedures के निम्न फायदे हैं।
  • Stored procedures, तेजी से चलता है क्योंकि वे डेटाबेस में पहले से सुरक्षित और तैयार किए गए होते हैं। 
  • केवल procedure का नाम और input को ही नेटवर्क पर भेजा जाता है इसलिए यह कम डाटा का उपयोग करता है। 
  • ये tables को सीधे ही एक्सेस करने और database queries में हानिकारक कोड जोड़ने से रोकते हैं। 
  • एक बार लॉजिक लिखा जाता है और उसे कई बार प्रयोग किया जाता है।
  • सभी प्रोग्राम को अपडेट करने के लिए एक ही स्थान में procedure को बदला जाता है।
  • बड़े कार्यो को छोटे और सरल भागों में बांटा जाता है।

Stored Procedure के नुकसान - Disadvantages of Stored Procedure in Hindi 

Store procedure के निम्न नुकसान है।
  • सामान्य कोड की अपेक्षा इसमें गलतियों को ढूंढना और ठीक करना कठिन होता है।
  • यदि कार्य बड़ा या जटिल है तो उसे लिखना और बनाए रखना  मुश्किल हो सकता है।
  • विभिन्न databases, अलग-अलग नियमों का उपयोग करते हैं अतः stored procedures, सभी जगह कार्य नहीं कर सकता। 
  •  stored procedures के भीतर बहुत सारा लॉजिक डालने से सिस्टम को इसे मैनेज करने में कठिनाई होती है।
  • stored procedures को बदलने के लिए डेटाबेस को अपडेट करने की जरूरत होती है जो ज्यादा समय लेता है।
  • यदि इसे अच्छे से न लिखा जाए तो यह सिस्टम को धीमा कर देता है। 

Stored Procedure और Function में अंतर

1) 
Stored procedure:
यह data को जोड़ने, बदलने या हटाने जैसे कार्यों को करता है। 
Function:
यह मुख्यतः एक value रिटर्न करता है और इसका उपयोग SQL queries मे किया जाता है।

2) 
Stored procedure:
यह data रिटर्न कर सकता है या नहीं भी कर सकता 
Function:
यह हमेशा एक वैल्यू रिटर्न करता है। 

3)
Stored procedure:
EXEC या CALL command का उपयोग करके इसे चलाया जाता है।
Function:
इसे SELECT, WHERE, या अन्य SQL के भीतर उपयोग किए जाते हैं।

4)
Stored procedure:
यह  commit या rollback जैसे transactions को कंट्रोल करता है।
Function:
यह नहीं कर सकता। 

5) 
Stored procedure:
इसमें input और output parameters हो सकते हैं। 
Function:
इसमें आमतौर पर केवल input parameters होते है।

6) 
Stored procedure:
यह database में data को बदल सकते हैं।
Function:
यह केवल एक वैल्यू रिटर्न करता है और डाटा को नहीं बदलता।