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

हम MySQL संग्रहीत प्रक्रिया के अंदर परिणाम सेट को कैसे संभाल सकते हैं?


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

CURSOR . के उपयोग को प्रदर्शित करने के लिए MySQL संग्रहीत कार्यविधि के भीतर, हम निम्न संग्रहीत कार्यविधि बना रहे हैं जो नीचे दिखाए गए मानों पर आधारित है, '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 एक कथन के अंत में विकल्प, हम परिणाम सेट को लंबवत प्रारूप में प्राप्त कर सकते हैं। निम्नलिखित पर विचार करें उदाहरण - mysql> Select * from Student where name = 'Aarav'\G *************************** 1. row ***************************   Name: Aarav RollNo: 150 &

  1. MySQL संग्रहित प्रक्रिया में फॉर लूप का उपयोग कैसे करें?

    MySQL संग्रहीत कार्यविधि में FOR LOOP के साथ काम करने के लिए सिंटैक्स निम्नलिखित है - anyVariableName3 सेट करें तो लूप_लेबल छोड़ दें; अगर अंत; कोई भी वैरिएबल नाम 2 सेट करें =CONCAT (कोई भी वैरिएबल नाम 2, कोई भी वैरिएबल नाम 1, ,); कोई भी वैरिएबल नाम 1 =कोई भी वैरिएबल नाम 1 + 1 सेट करें; ITERATE लूप_

  1. एक MySQL संग्रहीत कार्यविधि में शर्तें सेट करें

    किसी संग्रहीत कार्यविधि में शर्तें सेट करने के लिए, MySQL में IF...ELSE का उपयोग करें। if-else के लिए सिंटैक्स निम्नलिखित है - यदि आपकी स्थिति है तो आपका स्टेटमेंट1, ईएलएसई योरस्टेटमेंट2, अगर समाप्त करें; आइए हम उपरोक्त सिंटैक्स को एक संग्रहीत कार्यविधि में लागू करें - // क्वेरी ठीक है, 0 पंक्तिया