Select*fromstudent_info;+----- +-- -------+----------+----------------+|id |Nama |Alamat"/> Select*fromstudent_info;+----- +-- -------+----------+----------------+|id |Nama |Alamat">

Rumah >pangkalan data >tutorial mysql >Bagaimanakah kami memproses set hasil dalam prosedur tersimpan MySQL?

Bagaimanakah kami memproses set hasil dalam prosedur tersimpan MySQL?

WBOY
WBOYke hadapan
2023-09-10 23:53:091461semak imbas

我们如何在 MySQL 存储过程中处理结果集?

Kita boleh menggunakan kursor untuk memproses keputusan yang ditetapkan dalam prosedur tersimpan. Pada asasnya, kursor membenarkan kami mengulangi set baris yang dikembalikan oleh pertanyaan dan memproses setiap baris dengan sewajarnya.

Untuk menunjukkan penggunaan CURSOR dalam prosedur tersimpan MySQL, kami mencipta prosedur tersimpan berikut yang berdasarkan nilai-nilai jadual bernama "info_pelajar" seperti yang ditunjukkan di bawah -

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)

Pertanyaan berikut akan mencipta fail bernama "list_address" prosedur yang mengembalikan senarai semua alamat yang disimpan dalam jadual -

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)

Sekarang apabila kita memanggil prosedur ini kita boleh melihat hasil berikut -

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)

Atas ialah kandungan terperinci Bagaimanakah kami memproses set hasil dalam prosedur tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam