游标 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. kettle从入门到精通 第二十八课 初识kettle-job

    1.前面我们一起学习了,很多转换的知识,转换为批量的开发做铺垫,今天我们一起来学习下kettle job的知识. kettle job 常用的步骤如下图,有Start.转换.作业.成功等步骤. 2.下 ...

  2. LidarView工程搭建指南

    前言 笔者做过一段时间的车载LiDAR开发,对LidarView开源项目进行过深度定制,摸索了一套LidarView软件的开发和调试方法 1 软件安装 1.1 安装准备 以Windows10系统平台为 ...

  3. 微博Lite版安装

    微博Lite版安装 前置条件,需要使用chrome,或chromium内核的浏览器. 1.浏览器输入:https://m.weibo.cn/ 2.在地址栏最右侧点击安装. --

  4. 三月二十一日 安卓app个人作业开发

    已经完成了 登录 和 注册逻辑 目前还有 提交打卡记录 的 开始时间 和 结束时间没有弄好 还有个人打卡记录的显示问题 并且我希望增加 修改个人密码 显示个人信息 退出登录 返回页面 删除打卡记录 的 ...

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

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

  6. Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件

    Idea SpringBoot 子模块 加载不到该子模块根目录config下面的配置文件 import org.mybatis.spring.annotation.MapperScan; import ...

  7. Kubernetes容器生命周期 —— 钩子函数详解(postStart、preStop)

    1.概述 容器生命周期钩子(Container Lifecycle Hooks)监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数. 钩子函数能够感知自身生命周期中的事件,并在相应的时刻到 ...

  8. 高通SOC启动流程

    背景 开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的. 以 MSM8953 为例子. MSM:mobile station modems,移动基带处理器, ...

  9. 机器学习(三)——K最临近方法构建分类模型(matlab)

    K最临近(K-Nearest Neighbors,KNN)方法是一种简单且直观的分类和回归算法,主要用于分类任务.其基本原理是用到表决的方法,找到距离其最近的K个样本,然后通过K个样本的标签进行表决, ...

  10. 【资料分享】Xilinx Zynq-7010/7020工业评估板规格书(双核ARM Cortex-A9 + FPGA,主频766MHz)

    1 评估板简介 创龙科技TLZ7x-EasyEVM是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC评估板,处理器集成PS端双核ARM ...