Apakah kursor dalam MySQL? Bagaimana untuk menggunakan kursor?

青灯夜游
Lepaskan: 2021-09-08 19:13:13
ke hadapan
3302 orang telah melayarinya

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;$$
Salin selepas log masuk

Panggilan prosedur tersimpan.

mysql>  call select_all;$$
Salin selepas log masuk

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
Salin selepas log masuk

2. Buka kursor

OPEN cursor_name;
Salin selepas log masuk

3 Dapatkan data dalam kursor

FETCH cursor_name INTO var_name [, var_name]...
Salin selepas log masuk

4. Tutup kursor

CLOSE cursor_name;
Salin selepas log masuk

5 Lepaskan kursor

DEALLOCATE cursor_name;
Salin selepas log masuk

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));
Salin selepas log masuk
<. 🎜> 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
Salin selepas log masuk
call getTotal();

mysql> select * from cursor_table_user;
+--------+
| name   |
+--------+
| 张三   |
| 李四   |
| 王五   |
+--------+
3 rows in set (0.00 sec)
Salin selepas log masuk
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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan