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

青灯夜游
リリース: 2021-09-08 19:13:13
転載
3264 人が閲覧しました

カーソルとは何ですか?カーソルの使い方は?次の記事では、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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!