游标的作用:游标提供了一种对从表中检索出的数据进行操作的灵活手段。
通过使用游标,使SQL这种面向集合的语言有了面向过程开发的能力。
如何使用游标:
在MySQL数据库中,可以在存储过程、函数、触发器、或者事件中使用游标。
使用时需要与handler一起,并且游标要在handler之前定义。
游标具有三个属性:(1)Asensitive:数据库也可以选择不复制结果集;
(2)Read only:不可更新;
(3)Nonscrollable:游标只能向一个方向前进,并且不可以跳过任何一行数据。
使用时,首先定义一个游标变量:
然后打开定义好的游标变量:
接着就可以从游标中取得数据:
最后关闭游标:
通过一个例子演示如何在存储过程中使用游标:
use datatest; set @counts = '3333'; set @eee = 'egy49xa'; call pp3(@counts, @eee); select @counts, @eee; drop procedure IF EXISTS pro_result; delimiter // create procedure pro_result(out sum bigint) BEGIN declare i int; declare done int default 0; declare did cursor for select id from demo1;-- 游标的定义 declare continue handler for not found set done = 1; set sum = 0; open did;-- 打开游标 xxx:LOOP fetch did into i;-- 游标里取得数据 if done = 1 THEN -- 设定退出条件 leave xxx; END IF; set sum = sum + i; END LOOP; close did; END // delimiter ; -- 调用 set @sum = 0; call pro_result(@sum); select @sum;
数据为十万条结果