MySQL学习:
MySQL游标
1.什么是游标?
游标(cursor)是一个存储在MySQL服务器上的数据库查询,它并不是一条SELECT语句,而是被该语句检索出来的结果集。
使用游标也可以轻易的取出在检索出来的行中前进或后退一行或多行的结果,也可以遍历返回的多行结果。
2.游标的使用
- 定义游标
CREATE PROCEDURE 函数名()
BEGIN
DECLARE 游标名 CURSOR
FOR
SELECT语句;
END;
- 打开和关闭游标
OPEN 游标名; --打开
CLOSE 游标名;--关闭
- 例子
fetch是获取游标当前指向的数据行,并将指针指向下一行,当游标已经指向最后一行时继续执行会造成游标溢出。
用 REPEAT 来循环的时候,也用 UNTIL done END REPEAT 语句来结束循环。
CREATE PROCEDURE func ()
BEGIN
-- 创建接收游标数据的变量
DECLARE o INT;
DECLARE n VARCHAR ( 20 );
-- 创建结束标值变量
DECLARE done INT DEFAULT FALSE;
-- 指定游标循环结束时的返回值
DECLARE CONTINUE HANDLER FOR NOT found SET done = TRUE;
-- 创建游标
DECLARE ordernumbers CURSOR
FOR
SELECT math FROM students;
-- 打开游标
OPEN ordernumbers;
-- 循环开始
REPEAT
FETCH ordernumbers INTO o;
...
UNTIL done END REPEAT;-- 循环结束
-- 关闭游标
CLOSE ordernumbers;
END;
CALL func ();
若有不当之处,欢迎指正!