Heim  >  Artikel  >  Datenbank  >  Was ist ein Cursor in MySQL? Wie verwende ich Cursor?

Was ist ein Cursor in MySQL? Wie verwende ich Cursor?

青灯夜游
青灯夜游nach vorne
2021-09-08 19:13:133221Durchsuche

Was ist ein Cursor? Wie verwende ich Cursor? Der folgende Artikel wird Ihnen helfen, die Cursor in MySQL zu verstehen und die Schritte zur Verwendung von Cursorn vorzustellen. Ich hoffe, er wird Ihnen hilfreich sein!

Was ist ein Cursor in MySQL? Wie verwende ich Cursor?

Um zu verstehen, was ein Cursor ist, müssen Sie zunächst die gespeicherte Prozedur verstehen. Eine gespeicherte Prozedur ist eine SQL-Anweisung, die im Voraus kompiliert und in der Datenbank gespeichert wurde. Sie kann auch IFAnweisungen, Festlegen von Variablen, Schleifen usw. Die folgende Anweisung wird beispielsweise zum Erstellen einer gespeicherten Prozedur verwendet. [Verwandte Empfehlungen: MySQL-Video-TutorialIF语句、设置变量、循环等,比如下面语句用于创建一个存储过程。【相关推荐: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 SET done = true;  ,他表示如果游标或SELECT语句没有数据的时候,将done]

rrreee

Anrufspeicher Verfahren.

rrreee
Gespeicherte Prozeduren können die Übertragung zwischen der Datenbank und dem Anwendungsserver reduzieren und sind gut für die Verbesserung der Datenbankverarbeitungseffizienz. Der Cursor (Cursor) wird an manchen Stellen auch als Cursor bezeichnet. Er kann die Ergebnismenge während der Speicherung durchlaufen Prozedur, aber derzeit erlaubt uns MySQL nur, jede Zeile in der Ergebnismenge vom Anfang bis zum Ende der SELECT-Anweisung abzurufen. Wir können die erste Zeile auch nicht aus der letzten Zeile abrufen Springt direkt zur angegebenen Zeile im Ergebnissatz.

Es gibt mehrere Schritte, um einen Cursor zu verwenden.

1. Cursor-Definitionrrreee3. Holen Sie sich die Daten im Cursor

rrreee🎜5. Lassen Sie den Cursor los🎜rrreee

Beispiel

🎜Tabelle erstellen🎜rrreee🎜Jetzt verwenden wir den Cursor, um die Tabelle „cursor_table“ zu durchlaufen und die Namen von Personen, die älter als 30 sind, in „cursor_table_user“ zu speichern🎜rrreeerrreee🎜Es gibt eine sehr wichtige Zeile in diesem Programm, DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true , was bedeutet, dass, wenn der Cursor oder die SELECT-Anweisung keine Daten enthält, der Wert von done gesetzt wird; Setzen Sie die Variable code> auf true, um die Schleife zu verlassen. 🎜🎜Das Folgende besteht darin, WHILE nacheinander zu durchlaufen. 🎜🎜🎜Ursprüngliche Adresse: https://juejin.cn/post/7003237966952792077🎜🎜🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonWas ist ein Cursor in MySQL? Wie verwende ich Cursor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen