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!
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;
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));
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)
, 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
Alamat asal: https://juejin.cn/post/7003237966952792077Untuk 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!