加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何利用mysql游标

发布时间:2022-06-30 20:03:22 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要为大家展示了如何使用mysql游标,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。 什么是游标: 如果你前面看过mysql函数,会发现无法使用返回多行结果的语句。但如果你又确实想要使用时,就需
  这篇文章主要为大家展示了如何使用mysql游标,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
 
  什么是游标:
 
  如果你前面看过mysql函数,会发现无法使用返回多行结果的语句。但如果你又确实想要使用时,就需要使用到游标,游标可以帮你选择出某个结果(这样就可以做到返回单个结果)。
  另外,使用游标也可以轻易的取出在检索出来的行中前进或后退一行或多行的结果。
  游标可以遍历返回的多行结果。
  补充:
  Mysql中游标只适用于存储过程以及函数。
  创建游标:
  语法:
  1.定义游标:declare 游标名 cursor for select语句;
  2.打开游标:open 游标名;
  获取结果:fetch 游标名 into 变量名[,变量名];
  关闭游标:close 游标名;
  create procedure p1()
  begin
    declare id int;
    declare name varchar(15);
    -- 声明游标
    declare mc cursor for select * from class;
    -- 打开游标
    open mc;
    -- 获取结果
    fetch mc into id,name;
    -- 这里是为了显示获取结果
    select id,name;
    -- 关闭游标
    close mc;
    
  end;
     
  create procedure p2()
  begin
    declare id int;
    declare name varchar(15);
    -- 声明游标
    declare mc cursor for select * from class;
    -- 打开游标
    open mc;
    -- 获取结果
    loop -- 循环,将表的内容都转移到class2中
    fetch mc into id,name;
    -- 这里是为了显示获取结果
    insert into class2 values(id,name);
    -- 关闭游标
    end loop;
    close mc;
    
  end;
     
  使用游标:
  游标每一次fetch都是获取一行结果,可以使用变量来获取fetch到的每一列的值
  create procedure p2()
  begin
    declare id int;
    declare name varchar(15);
    -- 声明游标
    declare mc cursor for select * from class;
    -- 打开游标
    open mc;
    -- 获取结果
    loop -- 循环,将表的内容都转移到class2中
    fetch mc into id,name;
    -- 这里是为了显示获取结果
    insert into class2 values(id,name);
    -- 关闭游标
    end loop;
    close mc;
    
  end;
  
  上面的代码会有一个报错如何使用mysql游标,不断循环的话,始终会达到表的末尾,到了末尾就无法继续fetch,一般来说都要避免报错,到了末尾前会有一个mysql定义的
 
  create procedure p3()
  begin
    declare id int;
    declare name varchar(15);
    declare flag int default 0;
    -- 声明游标
    declare mc cursor for select * from class;
    declare continue handler for not found set flag = 1;
    -- 打开游标
    open mc;
    -- 获取结果
    l2:loop
    
    fetch mc into id,name;
    if flag=1 then -- 当无法fetch会触发handler continue
      leave l2;
    end if;
    -- 这里是为了显示获取结果
    insert into class2 values(id,name);
    -- 关闭游标
    end loop;
    close mc;
    
  end;
 
  call p3();-- 不报错
  select * from class2;
  以上就是关于如何使用mysql游标的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!