← Back to MySQL Course | Chapter 15: Stored Procedures & Functions | Lesson 2 of 5

Procedure Parameters

Procedure parameters किसी recipe card पर blanks जैसे हैं जिन्हें आप इसे इस्तेमाल करते समय भरते हैं। IN parameters वे ingredients हैं जो आप इसे इस्तेमाल करने के लिए सौंपते हैं।
Syntax
sql
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

sql
DELIMITER //
CREATE PROCEDURE GetUserById(IN user_id INT)
BEGIN
  SELECT * FROM users WHERE id = user_id;
END //
DELIMITER ;
CALL GetUserById(1);

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

OUT Parameters

OUT parameters opposite direction में flow करते हैं, एक procedure को — जैसे एक row count या एक status code — computed value इसे call करने वाली किसी भी चीज़ को वापस सौंपने देते हुए, बिना caller के पहले कुछ meaningful pass करने की ज़रूरत के।

उदाहरण: OUT Parameters

sql
DELIMITER //
CREATE PROCEDURE CountUsers(OUT total INT)
BEGIN
  SELECT COUNT(*) INTO total FROM users;
END //
DELIMITER ;
CALL CountUsers(@total);
SELECT @total;

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

INOUT Parameters

INOUT parameters दोनों directions combine करते हैं: caller एक starting value pass करता है, procedure इसे internally पढ़ और बदल सकती है, और procedure खत्म होते ही updated value वापस सौंपी जाती है।

उदाहरण: INOUT Parameters

sql
DELIMITER //
CREATE PROCEDURE DoubleValue(INOUT n INT)
BEGIN
  SET n = n * 2;
END //
DELIMITER ;
SET @val = 5;
CALL DoubleValue(@val);
SELECT @val;

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

Parameter Types Mix करना

एक single procedure IN, OUT, और INOUT parameters को freely साथ mix कर सकती है, आपको यह exactly control देते हुए कि कौन सी values अंदर आती हैं, कौन सी बाहर, और कौन सी दोनों करती हैं।

उदाहरण: Mixing Parameter Types

sql
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 ;

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

Parameters में Missing Values Handle करना

किसी procedure पर defined हर parameter इसे call होने पर supply किया जाना ज़रूरी है, चाहे एक literal value या एक variable की तरह — एक को छोड़ देना MySQL को चुपचाप एक default इस्तेमाल करने के बजाय एक error raise करवाता है।

उदाहरण: Handling Missing Values in Parameters

sql
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);

⚠️ This is MySQL-specific syntax. It cannot run in the browser editor. Practice this on your local MySQL installation.

Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. @total जैसे एक session variable pass किए बिना एक OUT parameter इस्तेमाल करना, और फिर CALL के बाद इसे select न करना।
  2. procedure के अंदर एक OUT parameter की incoming value पढ़ना, जबकि यह NULL से शुरू होती है।
  3. किसी parameter को table column जैसा same नाम देना, ताकि WHERE id = id हमेशा true हो।
🔒

Chapter Quiz — Complete all 5 topics to unlock

0/5 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.