本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下:

本文内容:

什么是游标

创建游标

使用游标

首发日期:2018-04-18

什么是游标:

如果你前面看过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;

上面的代码会有一个报错

,不断循环的话,始终会达到表的末尾,到了末尾就无法继续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相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

本文标题: mysql游标的原理与用法实例分析

本文地址: http://www.cppcns.com/shujuku/mysql/306880.html

简述游标原理 mysql_mysql游标的原理与用法实例分析相关推荐

  1. 索引原理及项目中如何使用索引实例分析

    一.索引原理: 为认识索引工作原理,首先有必要对数据表的基本结构作一次全面的复习. 当一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机 ...

  2. mysql 实时聚合分析,mysql累积聚合原理与用法实例分析

    本文实例讲述了mysql累积聚合原理与用法.分享给大家供大家参考,具体如下: 累积聚合为聚合从序列内第一个元素到当前元素的数据,如为每个员工返回每月开始到现在累积的订单数量和平均订单数量 行号问题有两 ...

  3. python装饰器实例-Python装饰器原理与简单用法实例分析

    本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...

  4. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析

    本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...

  5. python设计模式案例分析_Python设计模式之职责链模式原理与用法实例分析

    本文实例讲述了Python设计模式之职责链模式原理与用法.分享给大家供大家参考,具体如下: 职责链模式(Chain Of Responsibility):使多个对象都有机会处理请求,从而避免发送者和接 ...

  6. 多字段mysql触发器实例_mysql触发器原理与用法实例分析

    本文实例讲述了mysql触发器原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是触发器 创建触发器 单条触发器语句 多条触发器语句 查看触发器 删除触发器 触发器的新旧记录引用 首发日期 ...

  7. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

    MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例, ...

  8. mysql 自定义函数实例_mysql自定义函数原理与用法实例分析

    本文实例讲述了mysql自定义函数原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是函数 函数的创建 函数的调用 函数的查看 函数的修改 函数的删除 首发日期:2018-04-18 什么 ...

  9. 简述游标原理 mysql_SQL游标原理和使用方法_MySQL

    bitsCN.com 在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句.但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录. ...

最新文章

  1. 【论文阅读整理】A Survey on Device-free Indoor Localization and Tracking in the Multi-resident Environment
  2. json带斜杠java,带斜杠的json解析
  3. 无影云电脑居家办公最佳实践(便捷账号)
  4. 安卓.点击头像--编辑个人姓名--提交后.同时调用js关闭页面--返回上一层
  5. IDC敲黑板啦:未来企业IT以混合云为主
  6. 彭山计算机培训,彭山2021年初中生学计算机
  7. 大数据架构师学习方向---加油。
  8. 自动化比手工测试成本高?使用Selenium评估测试自动化的ROI指标
  9. 自动化测试工具Selenium
  10. LINUX下载编译redis
  11. 2020-12-04Cannot Initialize Data Bindings 的问题
  12. IEC 61131 标准系列
  13. 阿里中间件seata源码剖析七:saga模式实现
  14. 寻梦港家政上门服务小程序微擎
  15. C. Garland dp
  16. python后面空格报错_python空格报错
  17. Merry Christmas 圣诞树html+css+js,c++,python实现
  18. java 格式化数字(每三位加逗号),保留两位小数。
  19. 天堂2mysql_天堂2单机版 L2J-som-rotm 安装全过程及常用工具 一步到位
  20. configure报错

热门文章

  1. linux版安全狗安装与使用
  2. excel中一个表格拆分为多个表格的代码
  3. 【庖丁解牛】Abort class-pclzip.php : Missing zlib extensions
  4. 搭建Vcenter 实现统一管理 esxi
  5. swf缓存文件在哪里_nginx.conf配置文件详解
  6. python自带idle_如何使用python自带IDLE
  7. MOS管怎么测试好坏-如何测试有五种诀窍-KIA MOS管
  8. PythonWeb 基于Flask框架+MySQL+html实现雨课堂系统
  9. 为什么企业需要 RPA?RPA将赋予企业什么?
  10. 超融合只是打地基,而Nutanix现在要“盖房子”