游标

由于MySQL检索返回的是一组成为结果集的行,可能是零行也可能是多行,但是之前学到的并没有能一行一行处理的方式。而有时候需要需要在检索出来的行中前进、后退一行或多行,这个时候需要使用游标。

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

游标在MySQL中只能用于存储过程或者函数

使用游标的流程

在能够使用游标前,必须声明它。为了定义要使用的SELECT语句。

声明游标后需要打开游标。这个过程用SELECT语句把数据实际检索出来。

对于填有数据的游标,根据需要检索出各行。

结束游标需要关闭它

打开和关闭游标

打开:OPEN CURSOR

关闭: CLOSE CURSOR

CURSOR指的是先前定义的游标名

如一个完整的打开关闭过程:

CREATE PROCEDURE processorder()

BEGIN

-- Declare the cursor

DECLARE ordernumbers CURSOR

FOR

SELECT order_num FROM orders;

-- Open the cursor

OPEN ordernumbers;

-- Close the cursor

CLOSE ordernumbers;

END//

Query OK, 0 rows affecte

这个存储过程只是做了声明、打开和关闭游标,没有对检索出的数据做任何操作。

使用游标数据

在游标打开后,可以使用FETCH语句来访问每行数据。可以指定检索哪列数据,数据存储在什么地方。

mysql> CREATE PROCEDURE processtitle()

-> BEGIN

-> -- Declare local variables

-> DECLARE o VARCHAR(100);

->

-> -- Declare the cursor

-> DECLARE titlenumbers CURSOR

-> FOR

-> SELECT title FROM articles;

->

-> -- Open the cursor;

-> OPEN titlenumbers;

->

-> -- Get title number

-> FETCH titlenumbers INTO o;

->

-> CLOSE titlenumbers;

-> END//

这部分存储过程中,先定义了一个局部变量o,数据类型为VARCHAR,之后将articles表中的title列中的当前行(此例为第一行)数据传入变量o中。

再看一个例子:

mysql> CREATE PROCEDURE processtitles()

-> BEGIN

-> -- Declare local variables

-> Declare done BOOLEAN DEFAULT 0;

-> Declare o VARCHAR(100);

->

-> -- Declare the cursor

-> DECLARE titlenumbers CURSOR

-> FOR

-> SELECT title FROM articles;

->

-> -- Declare continue handle

-> DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

->

-> -- Open the cursor

-> OPEN titlenumbers;

->

-> -- Loop through all rows

-> REPEAT

->

-> -- Get title number

-> FETCH titlenumbers INTO o;

->

-> -- End of loop

-> UNTIL done END REPEAT;

->

-> -- Close the cursor

-> CLOSE titlenumbers;

->

-> END//

此存储过程中定义了名为titlenumbers的游标,随后进行了重复执行语句DECLARE CONTINUE HANDLER, 对该列每行数据进行读取后逐行传入变量o中。

其中变量done决定了循环的结束点,当done为1时循环结束。02000指的是没有更多行循环是出现这个条件。

游标需要手动关闭吗MySQL,【MySQL必知必会】使用游标相关推荐

  1. mysql必学十大必会_MYSQL 学习(一)--启蒙篇《MYSQL必知必会》

    MYSQL必知必会 一. DDL 数据定义语言 Data Definition Language 是指CREATE,ALTER和DROP语句. DDL允许添加/修改/删除包含数据的逻辑结构,或允许用户 ...

  2. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)

    站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...

  3. MySQL必知必会笔记(一)基础知识和基本操作

    第一章  了解MySQL     数据库       保存有组织的数据的容器.(通常是一个文件或一组文件) 人们经常使用数据库这个术语代替他们使用的软件.这是不正确的,确切的说,数据库软件应称为DBM ...

  4. mysql必知必会_MySQL必知必会

    MySQL必知必会 联结的使用, 子查询, 正则表达式和基于全文本的搜索, 存储过程, 游标, 触发器, 表约束. 了解SQL 数据库基础 电子邮件地址薄里查找名字时, 因特网搜索站点上进行搜索, 验 ...

  5. 《MySQL必知必会》的读后感

    <MySQL必知必会>的读后感 该文章是阅读<MySQL必知必会>这本书后的读后感,并且总结了这本书中的几个方面的笔记. 1 查询数据 注意SQL语句不区分大小写,因此 SEL ...

  6. MySQL必知必会pdf

    下载地址:网盘下载 内容简介  · · · · · · <MySQL必知必会>MySQL是世界上最受欢迎的数据库管理系统之一.书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结 ...

  7. 根据SQL必知必会学习SQL(MYSQL)

    很久都没有整理SQL语句了,遇到让写SQL语句的题也很迷茫,所以就重拾一下知识,本文章根据SQL必知必会进行梳理 文章目录 一.检索所有列 1.select 1.1检索单个列 1.2 检索多个列 1. ...

  8. 从《MySQL必知必会》中对MySQL的理解

    MySQL是一个开源的DBMS,是目前主流的关系型数据库DBMS之一.在<MySQL必知必会>中,作者通过简单实用的订单实例简而明要地介绍了MySQL,这里简单汇总. 查询 检索+过滤+排 ...

  9. MySQL必知必会 代码+说明 全书整理

    前不久收获一本<mysql必知必会>实体书,这周得空将整本书再次回顾了下. 整理了书中全部的代码,加上了必要的语句说明. 我所使用的软件版本:mysql workbench 8.0.15 ...

  10. 读mysql必知必会有感_读《MySql必知必会》笔记

    MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...

最新文章

  1. Apache工具类ToStringBuilder用法简介
  2. js创建对象的几种方法
  3. 调整cisco参数设置
  4. python生成四位随机数
  5. JDBC批量Insert深度优化(有事务)
  6. python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)
  7. Android Studio(6)---编写APP
  8. java main生命周期_java的生命周期
  9. php 量 高并发 nosql,nosql - 高并发下Apache+mongodb的php驱动不稳定
  10. 86. php 绘图体系(2)
  11. 【maven】maven基础知识总结
  12. 基于Scala版本的TMDB大数据电影分析项目
  13. linux下游戏制作工具,在Linux下可用Wine安装和运行D5Power游戏制作工具、蜂窝助手...
  14. Python | 使用Socks5
  15. Mac 通过adb拉取dropbox中的内容
  16. 苹果ios签名证书的生成方法
  17. MS933/MS934 适用于 1MP/60fps 摄像头,15MHz100MHz,10 位/12 位的具有直流平衡编码和双向控制通道的串化器和解串器
  18. MySQL自学笔记详细版(从安装到入门)
  19. cento任务栏如何固定在下方_桌面越乱越聪明?爱因斯坦是如何管理桌面的
  20. 软考的证书含金量高吗?

热门文章

  1. Spring ioc,aop的理解
  2. 关于Java中的final关键字
  3. java例程练习(数组复制与arraycopy)
  4. MusicXML 3.0 (31) - Tab
  5. 零偏,零偏稳定性和零偏重复性,IMU误差模型
  6. 七、深度学习中的正则化
  7. 数据-第12课-线性表课后练习
  8. 如何选择 Web 前端模板引擎?
  9. 《CCNA学习指南:Cisco网络设备互连(ICND1)(第4版)》——2.11节生产网络模拟问题2-1...
  10. WIN7下IIS的安装与配置