Rumah >pangkalan data >tutorial mysql >Apakah kursor dalam MySQL? Bagaimana untuk menggunakan kursor?

Apakah kursor dalam MySQL? Bagaimana untuk menggunakan kursor?

青灯夜游
青灯夜游ke hadapan
2021-09-08 19:13:133362semak imbas

Apakah itu kursor? Bagaimana untuk menggunakan kursor? Artikel berikut akan membawa anda memahami kursor dalam MySQL dan memperkenalkan langkah-langkah untuk menggunakan kursor saya harap ia akan membantu anda!

Apakah kursor dalam MySQL? Bagaimana untuk menggunakan kursor?

Untuk memahami maksud kursor, anda mesti terlebih dahulu memahami prosedur tersimpan Prosedur tersimpan ialah pernyataan SQL yang telah disusun terlebih dahulu dan disimpan dalam pangkalan data boleh menerima parameter atau Gunakan pernyataan IF, tetapkan pembolehubah, gelung, dsb., seperti pernyataan berikut untuk mencipta prosedur tersimpan. [Cadangan berkaitan: tutorial video mysql]

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

Panggilan prosedur tersimpan.

mysql>  call select_all;$$

Prosedur tersimpan boleh mengurangkan penghantaran antara pangkalan data dan pelayan aplikasi, dan bagus untuk meningkatkan kecekapan pemprosesan pangkalan data Kursor (Kursor) juga dipanggil kursor di beberapa tempat dan boleh digunakan Prosedur tersimpan melalui set hasil, tetapi pada masa ini, MySQL hanya membenarkan kami untuk mendapatkan setiap baris dalam set hasil dari awal hingga akhir pernyataan SELECT Kami tidak boleh mendapatkan baris pertama dari baris terakhir, mahupun bolehkah kita melompat terus ke baris yang ditentukan dalam set hasil.

Terdapat beberapa langkah untuk menggunakan kursor .

1. Definisi kursor

DECLARE cursor_name CURSOR FOR select_statement

2. Buka kursor

OPEN cursor_name;

3 Dapatkan data dalam kursor

FETCH cursor_name INTO var_name [, var_name]...

4. Tutup kursor

CLOSE cursor_name;

5 Lepaskan kursor

DEALLOCATE cursor_name;

Instance

Buat jadual

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));
<.> Seterusnya kita Melalui kursor, melintasi jadual cursor_table dan menyimpan nama orang yang berumur lebih daripada 30 tahun dalam 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)
Program ini mempunyai baris yang sangat penting,

, yang bermaksud bahawa jika kursor atau pernyataan SELECT tiada data Pada masa ini, tetapkan nilai pembolehubah DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;   kepada benar untuk keluar dari gelung. done

Berikut adalah untuk melintasi secara berurutan melalui WHILE.

Alamat asal: https://juejin.cn/post/7003237966952792077

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:

Video Pengaturcaraan ! !

Atas ialah kandungan terperinci Apakah kursor dalam MySQL? Bagaimana untuk menggunakan kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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