mysql 游标使用总结

  • 游标可以用在存储过程 、函数 触发器或事件(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…..

发布了16 篇原创文章 · 获赞 13 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/u010282135/article/details/53219975
今日推荐