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

MySQL स्टोर्ड प्रोसीजर के अंदर परिणाम सेट को कैसे संभालें?


हम स्टोर्ड प्रोसीजर के अंदर परिणाम सेट को संभालने के लिए कर्सर का उपयोग कर सकते हैं। मूल रूप से एक कर्सर हमें एक क्वेरी द्वारा वापस की गई पंक्तियों के सेट पर पुनरावृति करने और प्रत्येक पंक्ति को तदनुसार संसाधित करने की अनुमति देता है।

CURSOR के उपयोग को दर्शाने के लिए, हम 'student_info' नामक टेबल के मानों के आधार पर निम्न स्टोर्ड प्रोसीजर बना रहे हैं:

mysql> Select * from student_info;
+-----+---------+----------+------------+
| id  | Name    | Address  | Subject    |
+-----+---------+----------+------------+
| 101 | YashPal | Amritsar | History    |
| 105 | Gaurav  | Jaipur   | Literature |
| 125 | Raman   | Shimla   | Computers  |
+-----+---------+----------+------------+
3 rows in set (0.00 sec)

निम्न क्वेरी 'list_address' नामक एक प्रोसीजर बनाएगी जो टेबल में संग्रहीत सभी पतों की सूची वापस करती है:

mysql> Delimiter //
mysql> CREATE PROCEDURE list_address (INOUT address_list varchar(255))
    ->
    BEGIN
    DECLARE value_finished INTEGER DEFAULT 0;
    DECLARE value_address varchar(100) DEFAULT "";
    DECLARE address_cursor CURSOR FOR
    SELECT address FROM student_info;
    DECLARE CONTINUE HANDLER
    FOR NOT FOUND SET value_finished = 1;
    OPEN address_cursor;
    get_address: LOOP
    FETCH address_cursor INTO value_address;
    IF value_finished = 1 THEN
    LEAVE get_address;
    END IF;
    SET address_list = CONCAT(value_address,";",address_list);
    END LOOP get_address;
    CLOSE address_cursor;
    END //
Query OK, 0 rows affected (0.00 sec)

अब, जब हम इस प्रोसीजर को इनवोक करते हैं तो परिणाम देख सकते हैं:

mysql> DELIMITER ;
mysql> Set @address_list = "";
Query OK, 0 rows affected (0.00 sec)
mysql> CALL list_address(@address_list);
Query OK, 0 rows affected (0.00 sec)
mysql> Select @address_list;
+-------------------------+
| @address_list           |
+-------------------------+
| Shimla;Jaipur;Amritsar; |
+-------------------------+
1 row in set (0.00 sec)

  1. - MySQL क्वेरी परिणाम को वर्टिकल फॉर्मेट में कैसे दिखाएं?

    स्टेटमेंट के अंत में \G (ego कमांड) विकल्प लगाकर परिणाम को वर्टिकल (लंबवत) फॉर्मेट में देख सकते हैं। चौड़े टेबल के लिए यह अधिक पठनीय होता है। उदाहरण: Select * from Student where name = Aarav\G *************************** 1. row *************************** Name: Aarav RollNo: 150 Grade: M.SC

  1. - 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;

  1. - MySQL स्टोर्ड प्रोसीजर में IF...ELSE का उपयोग करके शर्तें सेट करना

    MySQL स्टोर्ड प्रोसीजर में IF...ELSE सशर्त तर्क MySQL स्टोर्ड प्रोसीजर IF...ELSE स्टेटमेंट का उपयोग करके सशर्त तर्क का समर्थन करते हैं, जिससे पैरामीटर मानों के आधार पर डायनामिक निष्पादन पथ सक्षम होते हैं। सिंटैक्स IF yourCondition THEN yourStatement1; ELSE yourStatement2; END IF; पूर्ण उदा