您的位置:首页 > 数据库 > MySQL

mysql 游标使用总结

2016-11-18 17:43 399 查看
游标可以用在存储过程 、函数 触发器或事件(Event)中。通俗讲是用来循环select的查询结果。游标需要与handler一起使用,并且要在handler之前定义。游标有三个属性。

Asensitive : 数据库也可以选择不复制结果集。

Read only: 不可更新。

Nonscrollable: 游标只能向一个方向更新不能跳行。

使用过程分为 定义–打开–使用–关闭

定义 : DECLARE cursor_name CURSOR for select_statement

打开 : open cursor_name

使用 : fetch cursor_name into var_name….

关闭 : close cursor_name

example

delimiter $$;
create procedure cur_demo()
begin
declare done int default 0;
declare _emp_no int;
declare _dept_no varchar(10);
declare cur1 cursor for select emp_no,dept_no from dept_emp;
declare continue handler for not found set done=1;
open cur1;
read_loop:LOOP
fetch cur1 into _emp_no,_dept_no;
IF done THEN
leave read_loop;
end if;
end LOOP;
close cur1;
end;
delimiter ;


需要注意的是从游标取得的数据放入变量时,变量的名字不能和游标定义中的列名一样,否则取出的值都为null。我们定义的是_emp_no,游标中的是emp_no。

游标的开销主要是因为需要对每行进行处理,处理过程越复杂,游标的效率越低

关于游标效率问题 下一节继续 to be continue…..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql