游标 Cursor

游标是用来存储查询的结果集的数据类型,也称为是光标

在存储过程和函数中可以使用光标对结果集进行循环的处理

光标的使用包括1、声明,2、开启,3、关闭,4、Fetch

游标仅用于存储函数和

语法 Syntax

创建游标

DECLARE 游标名 CURSOR FOR 查询SQL;

打开游标

OPEN 游标名;

关闭游标

CLOSE 游标名;

使用游标

FETCH 游标名 INTO 变量1,变量2,...;

看完介绍以后发现其实是一个迭代器

查询的结果也是一张表,游标就从0的位置起始,FETCH就是一行一行读取结果记录

演示案例:

DELIMITER $
CREATE PROCEDURE cursorForAdmin()
BEGIN
-- 创建写入的变量
DECLARE CID INT(11);
DECLARE CUSERNAME VARCHAR(24);
DECLARE CPASSWORD VARCHAR(24); -- 声明游标
DECLARE adminCursor CURSOR FOR SELECT * FROM admin; -- 开启游标
OPEN adminCursor; -- 使用游标读取一行记录赋值到上述的变量中
FETCH adminCursor INTO CID, CUSERNAME, CPASSWORD; SELECT CID, CUSERNAME, CPASSWORD; -- 关闭游标
CLOSE adminCursor;
END

调用:

CALL cursorForAdmin();

第二次调用时把游标的推进到下一个行记录,写入上述的变量中

变量被重新赋值,记录显示新的结果,

如果游标已经推进到最后一行记录时,继续向下执行,发现已经没有记录了

存储过程会报错:

NO Data ,zero Rows Fectched SELECTED, OR PROCESSED

循环获取游标实现:

遍历首先需要获取查询结果的总记录数

使用  COUNT(*)  来获取

DELIMITER $
CREATE PROCEDURE cursorForAdminByFor()
BEGIN
# 展示用的变量
DECLARE CID INT(11);
DECLARE CUSERNAME VARCHAR(24);
DECLARE CPASSWORD VARCHAR(24); # 结束循环变量
DECLARE done BOOLEAN DEFAULT 0;
DECLARE o INT; # 游标变量
DECLARE adminCursor CURSOR FOR SELECT * FROM admin; # 打开游标
OPEN adminCursor; # 循环开始
REPEAT
FETCH NEXT FROM adminCursor INTO CID, CUSERNAME, CPASSWORD;
SELECT CID, CUSERNAME, CPASSWORD;
UNTIL done END REPEAT; # 关闭游标
CLOSE adminCursor;
END

调用:

CALL cursorForAdminByFor();

【DataBase】MySQL 31 游标的更多相关文章

  1. 一看便知linux下mysql报错ERROR 1044: Access denied for user: '@localhost' to database 'mysql'

    错误信息:ERROR 1044: Access denied for user: '@localhost' to database 'mysql' linux下解决方案: mysql> use ...

  2. ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'

    mysql> use mysqlERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql' ...

  3. Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题

    http://361324767.blog.163.com/blog/static/11490252520124454042468/ 首先我想说一句话: 我极度鄙视国内搞IT的人,简直无语,同样是解决 ...

  4. Database(Mysql)发版控制二

    author:skate time:2014/08/18 Database(Mysql)发版控制 The Liquibase Tool related Database 一.Installation ...

  5. MySQL中游标使用以及读取文本数据

    原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...

  6. ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'.前两天也出现过这个问题,网上找了一个比 ...

  7. MySQL存储过程 游标

    MySQL存储过程  游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...

  8. MySQL:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'. 原因是:mysql数据库的user表里,存 ...

  9. unknow table alarmtemp error when drop database (mysql)

    Q: unknow table alarmtemp error when  drop database (mysql) D: alarmtemp is table in rtmd database. ...

  10. Access denied for user ''@'localhost' to database 'mysql'

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'   在centos下安装好了mysql,用r ...

随机推荐

  1. 前端使用 Konva 实现可视化设计器(14)- 折线 - 最优路径应用【代码篇】

    话接上回<前端使用 Konva 实现可视化设计器(13)- 折线 - 最优路径应用[思路篇]>,这一章继续说说相关的代码如何构思的,如何一步步构建数据模型可供 AStar 算法进行路径规划 ...

  2. django通过channels实现websocket

    WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...

  3. spring mvc GET请求方式及传参

    spring mvc GET请求方式及传参 @Api(tags = "管理接口") @Slf4j @RestController @RequestMapping("/my ...

  4. springboot支持http2

    现在http/3都出来了,但是很多项目还是没有采用https,这个是说不过去的. http3在2022/06/06 正式发布,具体见https://www.163.com/dy/article/H9B ...

  5. Bloom Filter布隆过滤器

    简介 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 "某样东西一定不存在或者可 ...

  6. Linux下挂载NTFS格式的U盘

    NTFS是Windows下的格式,在Linux下是识别不了的,要想在Linux上挂载NTFS格式的U盘需要安装软件以提供支持.软件名为ntfs-3g. 1.下载安装包 https://tuxera.c ...

  7. linux挂载的ntfs格式硬盘无法使用回收站

    linux挂载的ntfs格式硬盘无法使用回收站 解决办法: 新建回收站文件, 文件名为Trash-XXX . 比如Trash-1000 这里的1000就是你的$UID. sudo mkdir /.Tr ...

  8. Hbase第二课:Hbase架构与基础命令

    目录 HBase架构与基础命令 一.了解HBase 1.1 HBase概述 1.2 HBase处理数据 1.3 HBase与HDFS 二.HBase相关概念 2.1 分布式数据库 2.2 列式存储 2 ...

  9. C++ 史上首次超越 C,Python 第二!

    TIOBE 公布了 2024 年 6 月的编程语言排行榜--C++ 史上首次超越 C,跃至榜二,仅次于 Python. C++ 是一种广泛应用于嵌入式系统.游戏开发和金融交易软件等领域的语言,在本月成 ...

  10. SpringBoot打包maven仓库里面没有的包

    SpringBoot打包maven仓库里面没有的包 在遇到一些自定义的jar包,maven仓库里面没有这些包,但是发布线上时我们还是只想发布一个jar包,也就是我们想要把第三方包打在最后生成的大jar ...