1.What
游标:相当于Java集合框架中的迭代器或者说指针
是存储在数据库服务器上的查询出的结果集
存储了该查询的游标之后,应用程序就可以根据需要滚动地浏览或修改其中的数据
注意:Mysql中游标只适用于存储过程(或函数)之中
2.Why
一条查询语句查询出一组结果集,使用其他方法不能做到迭代地处理其中的一条
只可以单条单条执行,做不到循环遍历,而使用游标就可以做到类似指针对结果集进行依此轮循处理
3.How
1)步骤要求
- 使用游标前必须声明,这是并没有检索数据执行select,知识定义了要使用的语句
- 声明之后,使用时必须打开游标以供使用,这时就将之前声明的语句数据检索了出来
- 对于填有数据的游标,根据需要取出各行
- 结束游标时,必须关闭游标
2)具体步骤
- 创建游标(存储过程中使用)
CREATE PRODUCE processorders()
BEGIN
DECLARE orderbums CURSOR
FOR
SELECT order_num FROM orders;
END
游标的作用域只限于存储过程中
- 打开关闭游标
打开: OPEN 游标名
关闭: CLOSE 游标名
在作用域中,游标可多次使用,多次打开多次关闭,不关闭会自动运行完成关闭
- 使用游标数据
FETCH 游标名 INTO 变量 -->将这一行查出的数据赋值给变量
通常使用游标常与循环语句结合使用,用到循环,就必须定义循环条件,这时就用到了布尔类型的变量了
游标中取出的数据一般需要临时变量去接受
注意 : 变量的定义必须在声明游标之前
句柄的定义必须在声明游标之后,循环遍历之前
如果不遵循顺序会产生错误
- 游标与循环语句相结合
REPEAT
循环体(游标FETCH 游标名 INTO 变量)
UNTIL 停止循环的条件 END REPEAT
游标使用时可以嵌套存储过程执行数据的处理
而对于有参存储过程的参数,可使用游标前定义的变量进行中间的变量存储