mysql begin end 用法_MySQL ------ 游标(CURSOR)(二十六)

MySQL执行检索操作会返回一组称为结果集的行,这组返回的行都是与SQL 语句相匹配的行(零行或多行),但是,使用简单的select 语句,没有办法得到第一行、下一行、或前十行,也不存在一行地处理所有行简单方法(也就是成批地处理它们),而有时,需要在检索出来的行中前进或后退一行或多行,怎么办来,之前了解的很难实现,那么本节的游标就可实现,,

游标(cursor)一个存储在mysql服务器上数据库查询,它不是一条select 语句,而是被语句检索出来的结果集。

好处:在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。

主要用于:交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。

注意:不像多数DBMS,MySQL游标只能用于存储过程和函数。

版本:MySQL 5 添加了对游标的支持,要使用的话MySQL版本需要在mysql 5 及以后的版本

one、注意使用游标的主要步骤:

1、在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,他只是使用select 语句。

2、一旦声明后,必须打开游标以供使用。这个过程用前面定义的select 语句把数据实际检索出来

3、对于填有数据游标,根据需要取出(检索)各行。

4、在结束游标使用时,必须关闭游标

在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开后,可根据需要频繁地执行取操作。

two、创建游标

游标用declare 语句创建。DECLARE 命名游标,并定义相应地select 语句,根据需要带where 和其他子句。

下面在存储过程中使用declare 定义一个游标,存储过程完成后游标也相应消失。

-- declare  游标名称 cursor for 查询语句 

b48b0bb77238b05b41866cafc2c073c3.png

打开和关闭游标

---  OPEN 游标名;

在处理open 语句时执行查询,存储检索出地数据以供浏览和滚动游标处理后,要关闭游标

---  CLOSE 游标名; 

close会释放游标使用的所有内部内存和资源,所有游标使用后都要进行关闭操作

在一个游标关闭后,如果没有重新打开,则不能使用它。但是使用声明过的游标不需要再次声明,使用open 语句打开就行。

如果不明确的关闭游标,mysql 将会在到达end 语句的时候自动关闭它。

上述可以修改为:

mysql

d9ca0e946b10c47598894f3db4589473.png

上述的存储过程声明、打开和关闭一个游标,但对检索出的数据什么也没有做

three、使用游标数据 FETCH

在一个游标被打开后,可以使用 fetch 语句分别访问它的每一行。

fetch 指定检索什么数据(所需的列),检索出来的数据存储在什么地方。还向前移动游标中的内部指针,使下一条fetch语句检索下一行(避免重复读取一行)。

--  从游标中检索单个行(第一行)

6c7b14f1a8bd3586e52376eb6df461ab.png

fetch 检索当前行的order_num 列(将自动从第一行开始)买到一个名为onum 的局部变量中,对检索出的数据不做任何处理。

-- 循环检索数据,从第一行到最后一行

b749ad104bfaa17691e586396f65b8e1.png

上述使用fetch 检索当前order_num 到声明为onum 的变量中,但是 这个fetch 在repeat 内,因此他会反复执行直到done 为真(由nutil done end repeat ;规定)为使它起作用用一个defaut 0 定义变量 done ,那么done 根据以下代码设置为真

declare continue handler for sqlstate '02000' set done=1;

上述,定义了一个CONTINUE HANDLER(继续处理程序) ,他是在条件出现时执行的代码,这里是指当SQLSTATE '02000' 出现时,SET done =1.

SQLSTATE '02000' 是一个未找到条件,当REPEAT 由于没有更多的行供循环而不能继续时出现

four、注意:

1、declare 语句的发布存在特定的次序,用户declare 语句定义的局部变量必须定义任意游标或句柄之前的定义,而句柄必须在游标之后定义,不遵守此顺序将产生错误信息。

2、如果调用这个存储过程,他将定义几个变量和一个continue handler ,定义并打开一个游标,重复读取所有的行,然后关闭游标。如果一切正常可以在循环内放入任意需要的处理(在fetch 语句之后,循环结束之前)

3、除了repeat 语句外,MySQL 还支持循环语句,它可以用来重复执行代码,直到使用 LEAVE 语句手动退出为止,通常REPEAT 语句的语法使它更适合于对游标进行循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机背景为什么总是黑色,电脑背景变成黑色的了是为什么

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。电脑背景变成黑色的了是因为微软采取了反盗版措施,凡是使用盗版Windows系统的用户,系统启动后,桌面背景会变成全黑,且半个小时黑屏一次…

treeview控件怎么折叠_拍摄的视频闪烁怎么办?一招就能搞定,电脑手机都适用...

视频拍摄/视频剪辑教程/新媒体大家好我是学拍视频剪辑的黑米老师很多剪辑师在剪辑时,总会收到一些视频画面闪烁的素材,这是因为机器观察到的色彩和人肉眼观察到的色彩不一样,当曝光变化比较明显时,机器会捕捉到一些肉眼观察不到的…

rocketmq 消息指定_进大厂必备的RocketMQ你会吗?

点击关注"故里学Java"右上角"设为星标"好文章不错过关于消息队列,相信大家都不陌生,现在的中大型项目中或多或少都有使用到消息队列,对于消息队列大家可能都有一定的了解,使用消息队列可以解决什么样的问题&a…

秦丝软件的服务器稳定吗,强烈推荐 | 最好的五款服装进销存软件排名

随着企业的发展和市场的需要,传统的手工记录法复杂而繁琐,且错误较多费时费力,尤其是服装行业,涉及的品牌众多,需要管理的货品数量多,质量参差不齐,经营管理越来越困难。在此,小编为…

c语言putchar_C语言实现变色的心!连机器都会变心,呵,男人!

各位,今天我们用C语言来秀一把,给大家带来一个会自动变色的心:怎么样,效果还可以吧!其实这个实现的原理还是比较简单的,为了让窗口别跟控制台那样难看,我调用了system函数对窗口的大小、颜色和标…

git灰度发布版本_Git发布2.30版本

Git 2.30版本已于北京时间今天凌晨3点发布,是该广受欢迎的分布式修订版本控制系统的最新稳定版本更新,Git由Linux内核发明者Linus大神于2005年推出。2020年早些时候,Git 2.28版本带来了对可配置/默认分支名称的支持,以取代到目前为…

匿名的ftp服务器不允许用户上传文件对吗,FTP服务器匿名用户也能上传文件的配置...

FTP服务器匿名用户也能上传文件的配置[日期:2006-12-05]来源:作者:[字体:大 中 小]环境:RedHat 7.3 wu-ftp-2.6.2 proftpd-1.2.4步骤:1.wu-ftpa.从RedHat的光盘上安装wu-ftpd-2.6.2-5.i386.rpm和anonftp-4.0-9.i386.rpm这两个包# …

mongdb2008puls4.0.3安装_Mathematica 10.3安装教程

软件下载[软件名称]:Mathematica v10.3[软件语言]:简体中文 [软件大小]:2.26G[安装环境]:Win10/Win8/Win7[下载链接]:https://pan.baidu.com/s/1fDUUrR-W8IIj8Dem3YZMrQ[提取码]&…

开发web应用,用前端技术还是.NET?

选择使用前端技术还是.NET(后端)取决于您的项目需求、团队技能和其他因素。下面是一些考虑因素: 使用前端技术的情况: 1、交互性强的应用: 如果您的网站需要大量客户端交互、动画效果或实时更新,前端技术…

python接口 同花顺_利用python探索股票市场数据指南

虽然同花顺之类的金融理财应用的数据足够好了,但还是有自己定制的冲动, 数据自然不会不会比前者好很多,但是按照自己的想法来定制还是不错的。目标通过免费的数据接口获取数据,每日增量更新标的历史交易数据, 然后通过Kibana做可视化及数据分…

java ee是什么_死磕 java集合之HashSet源码分析

问题(1)集合(Collection)和集合(Set)有什么区别?(2)HashSet怎么保证添加元素不重复?(3)HashSet是否允许null元素?&#xf…

php获取ajax数组,从AJAX获取PHP中的JSON数组请求

如果可以的话,我会建议改变你正在jQuery的请求发送到以下方式:var h1 []h2 []h3 [],layout $("input[typeradio][namelayout_option]:checked").val();$("ul.widget-order[name1] li").each(function() { h1.push($(this).attr(…

ubuntu wifi固定ip_自制wifi遥控小车!ESP8266实践指南(二)

上次带大家利用ESP8266自制了wifi控制的LED点阵屏幕,大家觉得怎么样呢? 手把手教你用wifi控制显示屏!ESP8266实践指南(一)今天我们来做点更有意思的~ wifi遥控小车!一、所需材料ESP8266 NodeMCU开发板:这次我们使用CP2…

micopython 18b20_[MicroPython]stm32f407控制DS18B20检测温度

1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法。 2. 进一步学习编制数据输出程序的设计方法。 3. 学习DS18B20的接线方法,并利用DS18B20检测当前温度。 2.所需元器件 F407Micropython开发板1块 数据线1条 DS18b20温度传感器1个 DS18B20测温模块(不含DS18B2…

shiro ajax权限,web项目中使用shiro权限管理,session过时,Ajax请求的处理方式。

// 服务端代码RequestMapping(value { "/login-form.html", "/" }, method GET)public String loginForm() {if(contextService.isAuthenticated()) {return "redirect:/home.html";} else {HttpServletRequest request contextService.getRe…

float php 运算_写给 PHP 程序员的 Python 学习指南

文 | 汤青松SegmentFault编辑 | EarlGrey推荐 | 编程派公众号(ID:codingpy)一、背景人工智能这几年一直都比较火,笔者一直想去学习一番;因为一直是从事PHP开发工作,对于Python接触并不算多,总是在关键时候面临着 基础不…

类似ftp文件服务器有哪些,FTP的替代品有哪些,你知道吗?

在某些情况下,需要从服务器上传(或下载)文件。多年来,最流行的文件传输方法是文件传输协议(FTP)。FTP的一大优点是它支持断点续传。FTP收获了方便性,却在安全性上有所欠缺。FTP未加密,这意味着格式是开放的,文件可能在…

case里面两个条件_Go语言条件语句之 switch 语句

点击上方蓝色 “铁匠学编程” 关注我,让我们一起学习!switch语句会根据传入条件不同,选择不同的分支执代码进行执行,他可以代替多个 if else 子句,Go 语言的分支语句和 PHP 的类似,Go 不需要显示的通过brea…

api 二次 开发 禅道_浅谈-软件开发流程

先直接放出我对软件开发的相关人员职责和流程:图一:软件开发的相关人员职责以下是截屏的开发流程泳道图:横轴是相关开发人员的工作模块;纵轴是从上至下开发时序周期。图二:软件开发的流程图从职责图和流程图对应到我们…

光遇安卓服务器维修,《光遇》渠道服更换手机解决办法

《光遇》游戏中渠道服更换手机怎么办?很多小伙伴更换手机后登陆游戏发现自己还需要重头开始,很多小伙伴表示不知道怎么找回之前的渠道服账号和数据?当然IOS玩家不用担心,如果更换IOS可以继续使用账号,但是IOS更换安卓是…