ホームページ  >  記事  >  データベース  >  MySQL ストアド プロシージャで結果セットを処理するにはどうすればよいでしょうか?

MySQL ストアド プロシージャで結果セットを処理するにはどうすればよいでしょうか?

WBOY
WBOY転載
2023-09-10 23:53:091423ブラウズ

我们如何在 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)

このプロシージャを呼び出すと、以下の結果が表示されます-

rreeee

以上がMySQL ストアド プロシージャで結果セットを処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。