游标是 MySQL 用于存储结果集及其位置的对象。游标允许您迭代检索存储过程或函数中的查询结果集,并针对其中的每一行执行操作。
游标的基本语法为:
sql
DECLARE cursor_name CURSOR FOR SELECT ...;
OPEN cursor_name;
FETCH cursor_name INTO ... ;
CLOSE cursor_name;
使用步骤:
- 使用DECLARE语句定义游标,指定查询结果集。
sql
DECLARE mycursor CURSOR FOR SELECT * FROM products;
- 使用OPEN语句打开游标,执行查询并存储结果集。
sql
OPEN mycursor;
- 使用FETCH语句获取游标的下一行,并存储在变量中。
sql
DECLARE product_id INT;
DECLARE product_name VARCHAR(100);
FETCH mycursor INTO product_id, product_name;
- 使用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表中的所有行,并执行循环中的操作。
游标允许以可控的方式迭代访问结果集,适用于需要对大量行进行操作的场景。