ホームページ >データベース >mysql チュートリアル >MySQL のカーソルとは何ですか?カーソルの使い方は?

MySQL のカーソルとは何ですか?カーソルの使い方は?

青灯夜游
青灯夜游転載
2021-09-08 19:13:133358ブラウズ

カーソルとは何ですか?カーソルの使い方は?次の記事では、MySQL のカーソルを理解し、カーソルを使用する手順を紹介します。

MySQL のカーソルとは何ですか?カーソルの使い方は?

カーソルとは何かを理解するには、まずストアド プロシージャを理解する必要があります。ストアド プロシージャとは、事前にコンパイルされてデータベースに保存されている SQL ステートメントです。パラメーターを受け入れることも、IF ステートメントを使用したり、変数やループなどを設定したりすることもできます。たとえば、次のステートメントを使用してストアド プロシージャを作成します。 [関連する推奨事項: mysql ビデオ チュートリアル ]

delimiter $$
create procedure select_all() begin select * from user; end;$$

ストアド プロシージャを呼び出します。

mysql>  call select_all;$$

ストアド プロシージャを使用すると、データベースとアプリケーション サーバー間の通信を減らすことができ、データベースの処理効率を向上させるのに役立ちます。カーソル (Cursor) は、カーソルと呼ばれることもあります。セットはループ内で処理されますが、現在、MySQL では SELECT ステートメントの最初から最後までの結果セット内の各行を取得することしかできません。最初の行を最後の行から移動したり、結果セットに直接ジャンプしたりすることはできません。行を指定してください。

カーソルを使用するには、いくつかの手順があります。

1. カーソル定義

DECLARE cursor_name CURSOR FOR select_statement

2. カーソルを開く

OPEN cursor_name;

3. カーソル内のデータを取得

FETCH cursor_name INTO var_name [, var_name]...

4. カーソルを閉じる

CLOSE cursor_name;

5. カーソルを解放します

DEALLOCATE cursor_name;

テーブルの作成

CREATE TABLE cursor_table
(id INT ,name VARCHAR(10),age INT
)ENGINE=innoDB DEFAULT CHARSET=utf8;
insert into cursor_table values(1, '张三', 500);
insert into cursor_table values(2, '李四', 200);
insert into cursor_table values(3, '王五', 100);
insert into cursor_table values(4, '老六', 20);


create table cursor_table_user(name varchar(10));

以下では、カーソルを使用してcursor_tableテーブルを走査します。そして 30 歳以上の人を追加します その人の名前はcursor_table_userに格納されます

drop procedure getTotal;
delete from cursor_table_user ;

CREATE  PROCEDURE getTotal()
BEGIN  
   DECLARE total INT; 
   DECLARE sid INT;  
   DECLARE sname VARCHAR(10);  
   DECLARE sage INT;  
   DECLARE done INT DEFAULT false;  
   DECLARE cur CURSOR FOR SELECT id,name,age from cursor_table where age>30;  
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;   
   SET total = 0;  
   OPEN cur;  
   FETCH cur INTO sid, sname, sage;  
   WHILE(NOT done) 
   DO  
       insert cursor_table_user values(sname);
       SET total = total + 1;  
       FETCH cur INTO sid, sname, sage;  
       
   END WHILE;  
   CLOSE cur;  
   SELECT total;  
END
call getTotal();

mysql> select * from cursor_table_user;
+--------+
| name   |
+--------+
| 张三   |
| 李四   |
| 王五   |
+--------+
3 rows in set (0.00 sec)

このプログラムには非常に重要な行があります、

DECLARE CONTINUE HANDLER FOR NOT FOUND SETned = true; ,つまり、カーソルまたは SELECT ステートメントにデータがない場合、done変数の値が true に設定され、ループが終了します。

以下は、WHILE を順番に走査することです。

元のアドレス: https://juejin.cn/post/7003237966952792077

プログラミング関連の知識については、こちらをご覧ください:

プログラミング ビデオ ! !

以上がMySQL のカーソルとは何ですか?カーソルの使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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