什么是MySQL中的游标?

游标是 MySQL 用于存储结果集及其位置的对象。游标允许您迭代检索存储过程或函数中的查询结果集,并针对其中的每一行执行操作。

游标的基本语法为:

sql
DECLARE cursor_name CURSOR FOR SELECT ...; 
OPEN cursor_name;
FETCH cursor_name INTO ... ;
CLOSE cursor_name;

使用步骤:

  1. 使用DECLARE语句定义游标,指定查询结果集。
sql
DECLARE mycursor CURSOR FOR SELECT * FROM products;
  1. 使用OPEN语句打开游标,执行查询并存储结果集。
sql
OPEN mycursor; 
  1. 使用FETCH语句获取游标的下一行,并存储在变量中。
sql
DECLARE product_id INT;
DECLARE product_name VARCHAR(100);
FETCH mycursor INTO product_id, product_name;
  1. 使用CLOSE语句关闭游标。
sql 
CLOSE mycursor;

例如:

sql
CREATE PROCEDURE getProducts() 
BEGIN
    DECLARE mycursor CURSOR FOR SELECT * FROM products;
    DECLARE product_id INT;
    DECLARE product_name VARCHAR(100);

    OPEN mycursor;

    REPEAT
        FETCH mycursor INTO product_id, product_name;
        -- do something
     UNTIL mycursor%NOTFOUND 
    END REPEAT;

    CLOSE mycursor;
END; 

这会创建一个存储过程,使用游标迭代获取products表中的所有行,并执行循环中的操作。
游标允许以可控的方式迭代访问结果集,适用于需要对大量行进行操作的场景。