以下说明基于mysql 5.5。
概述:我知道大部分人对于mysql游标使用的不多。mysql大多数情况可以用“集合”操作,即可满足90%的需求。mysql cursor作为对“记录”操作,是操作数据的一种补充。
mysql cursor三大特性(大三“坑”):
1、只读的:cursor本身不提供修改数据的操作,只能fetch columns into variables。(当然你可以把数据拿出来以后,再用update语句操作一下,但是有坑,第三点说明)。
2、不能滚动的:只能向一个方向遍历数据,不能回滚,不能随意进退,不能跳过某些记录。
3、数据敏感的(大坑): 游标分为两类,一类为数据敏感类型的游标,一类为非数据敏感类型的游标 。
mysql cursor无关紧要的特性:
1、游标只能在存储过程中使用,包含在BEGIN ... END statement中。
2、需要close cursor关闭游标,释放资源。其实如果不释放,在END statement结束以后,自动释放cursor。
3、游标的声明语句必须放在所有变量的声明语句之后。
4、游标的声明语句必须关联select statement。
5、定义一个CONTINUE HANDLER FOR NOT FOUND,可以帮助游标在fetch no data的时候,跳出fetch循环。
6、CONTINUE HANDLER FOR NOT FOUND 这个条件不仅仅针对游标没有找到数据会触发,针对其他select statement(在没有检索到数据的情况下)也会触发。