Procedure Parameters
In this page:
CREATE PROCEDURE procedure_name(
IN param1 datatype,
OUT param2 datatype,
INOUT param3 datatype
)
BEGIN
-- SQL statements
END
IN Parameters
IN parameters default parameter type हैं और आपको किसी procedure में values pass करने देते हैं उसे पढ़ने और इस्तेमाल करने के लिए, जैसे कौन सी rows पर procedure काम करेगा यह filter करने के लिए एक ID — caller की original value कभी modify नहीं होती।
उदाहरण: IN Parameters
DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;
CALL GetUserById(1);
OUT Parameters
OUT parameters opposite direction में flow करते हैं, एक procedure को — जैसे एक row count या एक status code — computed value इसे call करने वाली किसी भी चीज़ को वापस सौंपने देते हुए, बिना caller के पहले कुछ meaningful pass करने की ज़रूरत के।
उदाहरण: OUT Parameters
DELIMITER //
CREATE PROCEDURE CountUsers(OUT total INT)
BEGIN
SELECT COUNT(*) INTO total FROM users;
END //
DELIMITER ;
CALL CountUsers(@total);
SELECT @total;
INOUT Parameters
INOUT parameters दोनों directions combine करते हैं: caller एक starting value pass करता है, procedure इसे internally पढ़ और बदल सकती है, और procedure खत्म होते ही updated value वापस सौंपी जाती है।
उदाहरण: INOUT Parameters
DELIMITER //
CREATE PROCEDURE DoubleValue(INOUT n INT)
BEGIN
SET n = n * 2;
END //
DELIMITER ;
SET @val = 5;
CALL DoubleValue(@val);
SELECT @val;
Parameter Types Mix करना
एक single procedure IN, OUT, और INOUT parameters को freely साथ mix कर सकती है, आपको यह exactly control देते हुए कि कौन सी values अंदर आती हैं, कौन सी बाहर, और कौन सी दोनों करती हैं।
उदाहरण: Mixing Parameter Types
DELIMITER //
CREATE PROCEDURE AdjustStock(IN product_id INT, INOUT stock INT, OUT status TEXT)
BEGIN
SET stock = stock - 1;
SET status = IF(stock > 0, 'ok', 'out of stock');
END //
DELIMITER ;
Parameters में Missing Values Handle करना
किसी procedure पर defined हर parameter इसे call होने पर supply किया जाना ज़रूरी है, चाहे एक literal value या एक variable की तरह — एक को छोड़ देना MySQL को चुपचाप एक default इस्तेमाल करने के बजाय एक error raise करवाता है।
उदाहरण: Handling Missing Values in Parameters
DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;
-- CALL GetUserById(); -- errors: missing required parameter
CALL GetUserById(1);
@totalजैसे एक session variable pass किए बिना एकOUTparameter इस्तेमाल करना, और फिरCALLके बाद इसे select न करना।- procedure के अंदर एक
OUTparameter की incoming value पढ़ना, जबकि यहNULLसे शुरू होती है। - किसी parameter को table column जैसा same नाम देना, ताकि
WHERE id = idहमेशा true हो।
Chapter Quiz — Complete all 5 topics to unlock
0/5 topics done
Complete these topics first: