カーソルを使用して、ストアド プロシージャ内の結果セットを処理できます。基本的に、カーソルを使用すると、クエリによって返された一連の行を反復処理し、それに応じて各行を処理できます。
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 サイトの他の関連記事を参照してください。