Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL स्टोर्ड प्रोसीजर में FOR LOOP कैसे उपयोग करें?

MySQL में FOR LOOP नहीं, WHILE LOOP उपयोग करें

MySQL स्टोर्ड प्रोसीजर में **FOR LOOP नहीं होता** (Oracle PL/SQL के विपरीत)। इसके बजाय WHILE या LOOP ... LEAVE निर्माण का उपयोग करें।

WHILE LOOP पैटर्न (सिफारिश)

DELIMITER //
CREATE PROCEDURE YourProcedureName()
BEGIN
  DECLARE counter INT DEFAULT 1;
  DECLARE maxLimit INT DEFAULT 10;
  DECLARE result VARCHAR(255) DEFAULT '';
  
  WHILE counter <= maxLimit DO
    SET result = CONCAT(result, counter, ',');
    SET counter = counter + 1;
  END WHILE;
  
  SELECT result;
END //
DELIMITER ;

व्यावहारिक उदाहरण: 1 से 10 प्रिंट करें

1. प्रोसीजर बनाएं

mysql> DELIMITER //
mysql> CREATE PROCEDURE ForLoopDemo()
    -> BEGIN
    ->   DECLARE start INT DEFAULT 1;
    ->   DECLARE maxLimit INT DEFAULT 10;
    ->   DECLARE result VARCHAR(255) DEFAULT '';
    ->   
    ->   WHILE start <= maxLimit DO
    ->     SET result = CONCAT(result, start, ',');
    ->     SET start = start + 1;
    ->   END WHILE;
    ->   
    ->   SELECT result;
    -> END //
Query OK, 0 rows affected (0.37 sec)
mysql> DELIMITER ;

2. कॉल करें

mysql> CALL ForLoopDemo();
+-----------------------+
| result                |
+-----------------------+
| 1,2,3,4,5,6,7,8,9,10, |
+-----------------------+
1 row in set (0.00 sec)

LOOP ... LEAVE पैटर्न (अधिक लचीला)

CREATE PROCEDURE LoopDemo()
BEGIN
  DECLARE i INT DEFAULT 1;
  DECLARE result VARCHAR(255) DEFAULT '';
  
  loop_label: LOOP
    IF i > 10 THEN
      LEAVE loop_label;
    END IF;
    
    SET result = CONCAT(result, i, ',');
    SET i = i + 1;
    
    ITERATE loop_label;  -- वैकल्पिक, अगले इटरेशन पर जाएं
  END LOOP loop_label;
  
  SELECT result;
END

लेबल (Labels) का उपयोग

  • loop_label: LOOP - लूप को नाम दें
  • LEAVE loop_label - लूप से बाहर निकलें (break)
  • ITERATE loop_label - अगले इटरेशन पर जाएं (continue)
  • नेस्टेड लूप्स में आवश्यक

कर्सर के साथ लूप (पंक्तियों पर पुनरावृत्ति)

CREATE PROCEDURE CursorLoop()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE v_id INT;
  DECLARE v_name VARCHAR(100);
  DECLARE cur CURSOR FOR SELECT Id, Name FROM Users;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  
  OPEN cur;
  read_loop: LOOP
    FETCH cur INTO v_id, v_name;
    IF done THEN LEAVE read_loop; END IF;
    -- प्रत्येक पंक्ति पर कार्य
  END LOOP;
  CLOSE cur;
END

सारांश

निर्माणउपयोगनोट
WHILE condition DO ... END WHILEज्ञात इटरेशन, सरल लूपसबसे आम
LOOP ... LEAVE ... END LOOPजटिल निकास शर्तेंलेबल आवश्यक
REPEAT ... UNTIL condition END REPEATकम से कम एक बार चलाएंपोस्ट-टेस्ट

नोट: मूल लेख का "FORLOOP" सिंटैक्स अमान्य है। MySQL केवल ऊपर दिखाए गए लूप प्रकार समर्थन करता है।

  1. - MySQL स्टोर्ड प्रोसीजर में DELIMITER का सही उपयोग कैसे करें?

    MySQL स्टोर्ड प्रोसीजर बनाते समय DELIMITER का सही उपयोग आवश्यक है क्योंकि प्रोसीजर बॉडी में सेमीकॉलन (;) होते हैं जो डिफ़ॉल्ट स्टेटमेंट टर्मिनेटर हैं। सही सिंटैक्स DELIMITER // CREATE PROCEDURE procedure_name() BEGIN IF condition THEN statement1; ELSE statement2; END IF;

  1. - MySQL स्टोर्ड प्रोसीजर में डिलीमीटर का सही उपयोग और मान डालना

    समस्या स्टोर्ड प्रोसीजर बनाते समय डिफ़ॉल्ट डिलीमीटर (;) क्वेरी को जल्दी समाप्त कर देता है। समाधान DELIMITER बदलें, प्रोसीजर बनाएं, फिर डिलीमीटर बहाल करें। उदाहरण टेबल बनाएं: ); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; प्रोसीजर कॉल करें CALL insert_name(Chris, Brown); परिणाम +------------------+---

  1. - पायथन में फॉर लूप का उपयोग कैसे करें

    पायथन में फॉर लूप का उपयोग एलिमेंट्स की संख्या या किसी विशिष्ट पूर्णांक रेंज पर इटरेट करने के लिए किया जाता है। एलिमेंट्स ऐरे, स्ट्रिंग या पायथन में किसी अन्य इटरेबल ऑब्जेक्ट के हो सकते हैं। फॉर लूप सबसे अधिक उपयोग किया जाने वाला लूपिंग स्टेटमेंट है। हमारे द्वारा सामना किए जाने वाले अधिकांश प्रोग्र