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.
पिछले 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
[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 करना है।
IN , parameters के लिए default mode होती है , call करते time आपको ये value pass करनी ही पड़ेगी।
इसके अलावा इन parameters की value protected होती है , मलतब procedure call करते time pass की गयी value को procedure के अंदर manipulate नहीं कर सकते हैं।
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 कर सकते हैं।
किसी 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 | +------+
इसे तो आप इसके नाम से ही समझ गए कि यह एक तरह से 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 के बारे में अच्छे से समझ आ गया होगा।