mysql游标

游标描述:

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。游标实现了对mysql的存储过程中循环读取数据表中的对象的过程。

游标的特性:
  • READ ONLY 只读,只能取值而不能赋值
  • NOT SCROOLABLE 不可回滚,只能顺序读取
  • ASENSITIVE 敏感,不能在已经打开游标的表上执行update事务
游标的操作:
  1. 声明游标: declare cursor_name cursor for select_statement
    这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。
  2. 打开游标: open cursor_name
  3. 游标fetch:fetch cursor_name into var_name , var_name2 ...
    这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。
  4. 关闭游标close: close cursor_name
    这个语句关闭先前打开的游标。如果未被明确地关闭,游标在它被声明的复合语句的末尾被关闭。
游标的使用:

ex:

-- 创建存储过程cursorTest
create procedure cursorTest()
--使用复合语句
begin
      -- 声明isdone变量并设置默认值为0
     declare isdone int default 0;
     declare id1,id2 int;
     declare name char(5);
     -- 声明游标
     declare cur1 cursor for select id,name from user;
     declare cur2 cursor for select id from user_temp;
     declare continue handler for SQLSTATE 2000 set isdone =1;
     -- 打开游标
     open cur1;
     open cur2;
     -- 循环遍历
     repeat
          -- 获取游标内容
          fetch cur1 into id1, name;
          fetch cur2 into id2;
          -- 条件语句判断
          if not isdone then
              if id1 < id2 then
                   insert into user_temp2 value(id1,name);
              else
                  insert into user_temp2 values(id2,name);
              end if;
          end if;
     until isdone end repeat;
    --关闭游标
    close cur1;
    close cur2;
END;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 游标概念 由select语句返回的结果集包括满足该语句的where子句中条件的所有行。但是有时候应用程序并不总能将...
    不知名的蛋挞阅读 6,293评论 0 6
  • 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上...
    码谜妈咪阅读 10,268评论 0 4
  • 1.1 基本结构 PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。 1.2 命名规则 1.3 记...
    慢清尘阅读 9,323评论 3 14
  • 创建游标首先在MySql中创建一张数据表: CREATE TABLE IF NOT EXISTS store (i...
    听说我很强阅读 4,889评论 0 1
  • 中秋的节日味很浓。 中秋是团圆的日子,一派祥和气氛。 中秋的主角是月亮,她又怎能错过这一年一度的盛会。 群里也是祝...
    大明宫阅读 2,939评论 0 0