Stored Procedure Variables In MySQL In Hindi


पिछले topics में आपने Stored Procedure और Variables के concept के बारे में समझा और जाना।

तो जैसा कि आपने पढ़ा कि Stored Procedure functions है means हम इसमें values भी pass कर सकते हैं , और इस topic में हम सीखेंगे कि Stored Procedure के लिए कैसे parameters define और use करते हैं।

तो किसी stored procedure में कुल 3 तरह के parameters define कर सकते हैं -

  • IN

  • OUT

  • INOUT

Syntax For Defining Parameters In Stored Procedure

[IN | OUT | INOUT] parameter_name datatype

Explanation

  • सबसे पहले हमें parameter की mode define करनी है कि जो कि IN , OUT या INOUT हो सकती है।

  • फिर parameter name define करना है , ध्यान रहे parameter name कोई predefined keyword या function name न हो।

  • then parameter का data type define करना है।

MySQL IN parameters

IN , parameters के लिए default mode होती है , call करते time आपको ये value pass करनी ही पड़ेगी।

इसके अलावा इन parameters की value protected होती है , मलतब procedure call करते time pass की गयी value को procedure के अंदर manipulate नहीं कर सकते हैं।

MySQL IN parameter example

DELIMITER $$ CREATE PROCEDURE get_user( IN address_name VARCHAR(255) ) BEGIN SELECT * FROM users WHERE address = address_name; END $$ DELIMITER ;

ऊपर दिए गए example में address_name एक IN parameter है जिसे हमें query में WHERE Clause में use किया है , तो जब भी हम get_user() procedure call करेंगे कोई भी string value pass करनी पड़ेगी।

CALL get_user('India');

Output

+----+------------+------------+---------+--------+---------------------+
| id | name       | mobileno   | address | salary | created_at          |
+----+------------+------------+---------+--------+---------------------+
|  2 | Tom Cruise | 9043907889 | India   |   1200 | 2023-02-09 13:07:31 |
|  5 | John Quill | 9100021334 | India   |    200 | 2023-02-22 12:07:37 |
+----+------------+------------+---------+--------+---------------------+

इससे advantage ये है कि आप table से data को dynamic condition के according fetch कर सकते हैं। जैसा कि आप ऊपर दिए गए example में देख सकते हैं , आप pass की गयी value change करके different records भी select कर सकते हैं।

MySQL OUT parameter

किसी procedure में OUT parameters को value return करने के लिए किया जाता है , मतलब जब procedure call करेंगे तो OUT parameter की value ही return होगी।

For Example

DELIMITER $$ CREATE PROCEDURE total_users ( OUT t INT ) BEGIN SELECT COUNT(id) INTO t FROM users; END $$ DELIMITER ;

अब procedure call करते time आपको कोई value pass नहीं करनी बस variable को handle करना है , जैसा नीचे देख सकते हैं -

CALL total_users(@t);

Example में @t , procedure द्वारा return की गयी value को handle करने के लिए use किया गया , जिसे आप normal variable की तरह कही भी use कर सकते हैं।

जैसे -

> SELECT @t;
+------+
| @t   |
+------+
|    4 |
+------+

MySQL INOUT parameter

इसे तो आप इसके नाम से ही समझ गए कि यह एक तरह से IN और OUT दोनों की तरह work करता है।

DELIMITER $$ CREATE PROCEDURE counter_test( INOUT counter INT ) BEGIN SET counter = counter + 1; END$$ DELIMITER ;

इसे आप कुछ इस तरह से call कर सकते हैं -

> CALL counter_test(@counter); > SELECT @counter;
+----------+
| @counter |
+----------+
|     NULL |
+----------+

अभी हमें NULL इसीलिए मिला है क्योंकि हमने जो @counter variable pass किया वो define नहीं है और जो variable define नहीं होता है तो NULL मिलता है।

तो अब @counter variable define करते है , फिर call करके देखते हैं।

> SET @counter=0; > CALL counter_test(@counter); > SELECT @counter;

Output

+----------+
| @counter |
+----------+
|        1 |
+----------+

अब जब भी आप counter_test() procedure call करेंगे तो हर बार value 1 से increment होती रहेगी।

> CALL counter_test(@counter); > CALL counter_test(@counter); > CALL counter_test(@counter); > CALL counter_test(@counter); > SELECT @counter;

Output

+----------+
| @counter |
+----------+
|        5 |
+----------+

I Hope , आपको MySQL में Stored Procedure में variables के बारे में अच्छे से समझ आ गया होगा।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook