一,什么是游标(cursor)
个人觉得就是一个cursor,就是一个标识,用来标识数据去到什么地方了。你也可以把它理解成数组中的下标。

二,游标(cursor)的特性
1,只读的,不能更新的。
2,不滚动的
3,不敏感的,不敏感意为服务器可以或不可以复制它的结果
游标(cursor)必须在声明处理程序之前被声明, 并且变量和条件必须在声明游标或处理程序之前被声明。

三,使用游标(cursor)
1.声明游标

DECLARE cursor_name CURSOR FOR select_statement

这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的, 但是不能用SELECT语句不能有INTO子句。
2. 游标OPEN语句

OPEN cursor_name ;

这个语句打开先前声明的游标。
3. 游标FETCH语句

FETCH cursor_name INTO var_name [, var_name] ...

这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。
4. 游标CLOSE语句

CLOSE cursor_name ;

这个语句关闭先前打开的游标。

四,应用举例


drop procedure if exists test_cursor ;
-- delimiter表示以//结束编译
delimiter //
create procedure getResultFromTest(out result varchar(128))
begin
-- 游标所使用变量需要在定义游标之前申明
declare id int(11);
declare name varchar(20);
-- 遍历数据结束标志 注意位置顺序
DECLARE done INT DEFAULT FALSE;
-- 注意用别名 因为id在上面已经有定义所以需要使用表的别名区别
declare cur_test CURSOR for select t.id,t.name from test t;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur_test;
repeat
fetch cur_test into id, name;
select id ;
-- concat_ws函数用逗号后面的参数隔开 concat_ws(',','12','33','332') --> 12,33,332
select concat_ws(',',result,id,name) into result ;
until done
end repeat;
--注意关闭游标
close cur_test;
select result ;
end;
//
delimiter ;

调用时因为是out类型的参数所以需要变量来取值:


mysql>set @id = ''; --需要赋值 否则报错
mysql>call getResultFromTest(@id);

mysql cursor使用相关推荐

  1. django mysql 游标,MySQL Cursor 存储过程之游标与相关循环

    简单介绍游标 在检索出来的行中,前进或者后退一行或多行,就需要用到所谓的"游标". 游标不是某个SELECT语句,但是它是被该语句检索出来的结果集. 几个特点: ·MySQL游标只 ...

  2. mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历

    mysql 存储过程临时表.多游标嵌套使用样例: CREATE PROCEDURE method(IN start_Code varchar(10),IN end_Code varchar(10),i ...

  3. mysql cursor 字符集_两个MySQL存储过程中文问题的解决方案

    MySQL数据库存储过程常出现以下这样的问题: 1.存储信息为乱码,尤其通过执行sql脚本添加数据最为常见. 2.使用where子句是,对中文字符串进行比较,这个问题也是十分常见. 针对存储信息为乱码 ...

  4. mysql cursor使用变量_mysql cursor游标的使用,实例

    mysql被oracle收购后,从mysql-5.5开始,将InnoDB作为默认存储引擎,是一次比较重大的突破.InnoDB作为支持事务的存储引擎,拥有相关的RDBMS特性:包括ACID事务支持,数据 ...

  5. mysql cursor nodata_mysql游标的使用 No data - zero rows fetched, selected

    转自:http://blog.sina.com.cn/s/blog_544c72960101bvl3.html 这是一个游标的使用例子. 但是其中有几点需要注意,就是为什么要加入 declare CO ...

  6. mysql cursor 分页_Mysql 分页技术总结

    Mysql 分页技术总结 Mysql Pagination 1. 使用cursor方式进行数据分页. http://timyang.net/web/pagination/ 对于大结果集的数据,使用cu ...

  7. cursor游标(mysql)

    /* 游标 cursor 什么是游标?为什么需要游标 使用存储过程对sql进行编程的时候,我们查询的语句可能是数据是多个,它总是一口气全部执行,我们无法针对每一条进行判断.也就是说,我们无法控制程序的 ...

  8. lua mysql insert_Lua MySQL操作

    对于简单的数据操作,可使用文件处理.但有时,这些文件操作可能效率不高,可扩展且功能强大. 为此经常需要使用数据库. LuaSQL是一个从Lua到许多数据库管理系统的简单接口. LuaSQL是一个库,它 ...

  9. C API向MySQL插入批量数据的快速方法——关于mysql_autocommit

    MySQL默认的数据提交操作模式是自动提交模式(autocommit).这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行.我们可以通过设置autocommit的值改变是否是自 ...

最新文章

  1. mfschunkserver安装脚本
  2. 笔记-信息化与系统集成技术-区块链的技术架构
  3. 电脑安装系统多少钱_电脑系统安装教学
  4. dubbo的监控中心
  5. java 租车管理系统_jsp+servlet+jdbc实现的java web共享租车信息管理系统,包括登陆注册,页面框架Easy UI...
  6. 点云3D目标检测学习(3):Complex YOLO
  7. krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
  8. 思科计算机网络第四章考试,思科网络学院第期第四章.docx
  9. python对于设计师有什么用-好的IT产品设计师要做到哪些事
  10. 以非泛型方式调用泛型方法
  11. 古今地名对照总表!(按笔划数排序,强烈推荐的资料)
  12. 一款开源免费的网站监控系统
  13. python网球比赛模拟主持稿_跪求:关于体育类节目的模拟主持稿
  14. Matplotlib做图第一节
  15. android os仿ios,安卓仿ios12桌面全套仿安卓完美版
  16. 永久关闭IE 浏览器停止支持提示的方法 (针对360安全卫士或Windows 10)
  17. 下载本地pdf并压缩为zip文件
  18. 对比学习顶会论文系列-3-2
  19. 计算机创建只读用户,如何把电脑的文件夹在局域网共享成只读,别人不能删除和修改?...
  20. Linux系统日志查询

热门文章

  1. 3款在线表格工具推荐
  2. 无声杯 xss 挑战赛 writeup
  3. Android 11.0 12.0Launcher3 电话和短信app图标显示未读短信和未接来电的条数
  4. bat cmd 获取管理员权限
  5. 人生哲理,小笑话中的哲理
  6. vue2.0_在vue中使用echarts图表插件
  7. JS - 全局变量 局部变量
  8. Node js 全局变量
  9. mysql 联合索引 命中_mysql联合索引命中条件
  10. 北斗卫星明年投入商用:中国即将摆脱GPS依赖