mysql游标使用

来源:互联网 发布:约瑟夫环c语言链表 编辑:程序博客网 时间:2024/06/08 13:46

一、什么是游标:

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

一般情况下,只有当使用单纯sql无法满足查询条件的时候才会考虑使用游标,因为游标的查询过程较慢。

二、简单游标(单层循环)

BEGIN -- 开始存储过程

-- 定义变量用于存储结果或中间结果

DECLARE v_name varchar(255);

DECLARE done boolean;

-- 定义游标cur1,将后边select的结果放到游标里面,待会循环的时候可以使用。

DECLARE cur1 CURSOR FOR SELECT `name` FROM area;

## define the continue handler for not found flag

-- 如果没有可以匹配的结果,就将变量done设置为true

declare continue handler for NOT FOUND set done = true; 

 

-- 打开游标

  OPEN cur1;

-- 定义循环,此处可以理解为给循环一个名字:campaign_loop

  campaign_loop: LOOP

-- 将游标里面的值逐一(先第一个,往下执行之后再第二个,以此类推)赋值给v_name

    FETCH cur1 INTO v_name;

-- 判断是否有结果可以匹配(可以简单理解为v_name是否有值),如果没有可以匹配,就离开该循环

if done then 

leave campaign_loop;

end if;

 

-- 将游标里面的值插入到表中

insert into test(`name`, name2) values (v_name,'I am value.');

-- FETCH cur1 INTO v_name;

-- 结束循环

  END LOOP campaign_loop;

-- 关闭游标

  CLOSE cur1;

-- 结束整个存储过程

END

0 0
原创粉丝点击