If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
normally किसी table से data fetch करने के लिए हम query run करते हैं , और जितनी बार हम data fetch करते हैं query भी उतनी बार run करनी पड़ती है।
लेकिन MySQL हमें Stored Procedures के रूप एक facility provide करता है कि है हम एक particular query को एक function के रूप में define कर दें और जब जरूरत हो उस function को call कर लें।
MySQL में Stored Procedures एक तरह से functions होते हैं , जिसमे हम किसी query को define करके उसे बार बार call करते हैं ताकि वो query हमें हर बार न लिखनी पड़े।
जैसे नीचे दिए गए users table से data fetch करने के लिए कुछ इस तरह से query run की गयी है -
SELECT
name, mobileno, address, salary
FROM
users
ORDER BY
name ASC;
Output
+------------+------------+---------------+--------+ | name | mobileno | address | salary | +------------+------------+---------------+--------+ | John Quill | 9100021334 | India | 200 | | Rohan | NULL | ROhan Address | 34231 | | Tom Cruise | 9043907889 | India | 1200 | | Wick | NULL | Address | 231 | +------------+------------+---------------+--------+
अब जितनी बार भी मुझे इस तरह से result चाहिए उतनी बार मुझे ये query लिखनी पड़ेगी , जो कि काफी काफी boring और time wasting भी है। इससे अच्छा है हम एक procedure बना लेंगे और उसे call करते रहेंगे जब भी जरूरत पड़ेगी।
procedure बनाने के लिए CREATE PROCEDURE
syntax का use use किया जाता है , जैसे कि नीचे example में दिखाया गया है -
DELIMITER $$
CREATE PROCEDURE get_users()
BEGIN
SELECT
name, mobileno, address, salary
FROM
users
ORDER BY
name ASC;
END$$
DELIMITER;
Output
Query OK, 0 rows affected (0.073 sec)
Query OK है , means procedure create हो चुका है।
अब जब किसी procedure को call करना हो तो CALL
procedure_name() syntax follow कर सकते हैं।
For Example
CALL get_users();
Output
+------------+------------+---------------+--------+ | name | mobileno | address | salary | +------------+------------+---------------+--------+ | John Quill | 9100021334 | India | 200 | | Rohan | NULL | ROhan Address | 34231 | | Tom Cruise | 9043907889 | India | 1200 | | Wick | NULL | Address | 231 | +------------+------------+---------------+--------+
Output में आप देख सकते हैं कि same result हमें मिल रहा है जो query run करने से मिल रहा था।
query को execute करने के लिए MySQL database server में ही query को save करता है।
जब पहली बार किसी procedure को call किया जाता है तो , MySQL सबसे पहले database catalog में उस procedure को check करता है फिर procedure query को compile करके cache memory में रखता है इसके बाद execute करके result return करता है।
अब अगर same session में फिर से उसी procedure को call करते हो तो MySQL इस बार cache memory से compiled query को execute करके result return करता है।
Procedure में आप control flow statements जैसे If , Else भी use कर सकते हैं।
अब हालाँकि procedure , functions की तरह होते हैं तो किसी procedure में normally किसी programming language की तरह ही parameters भी define किये जा सकते हैं और call करते time values pass की जा सकती हैं।
stored procedures use करने के कई advantages हैं -
इसका use करके आप applications और MySQL Server के बीच Network Traffic को reduce करते हैं , क्योंकि एक query सारे statements की जगह एक compiled query run होती है।
इससे database को और secure करने में help मिलती है क्योंकि बिना किसी table को permission दिए आप सिर्फ procedure को permission देकर data manage कर सकते हैं।
सबसे बड़ा disadvantage है Resource Usage का , जितने ज्यादा procedure होंगे resources भी उतने ज्यादा use होंगे जिससे आपके database server पर load बढ़ने लगेगा।
दूसरा stored procedures को Debug करना बहुत मुश्किल है।