mysql 创建游标报错,MySQL游标概念与用法详解
本文实例讲述了mysql游标概念与用法。分享给大家供大家参考,具体如下:
1、游标的概念(cursor)
一条sql,对应n条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。如果开发过安卓的同学应该知道有一个api是cursor,也是读取sqlite数据库用的,和这个有点类似。
2、使用游标的步骤
(1)声明
使用declare进行声明
(2)打开游标
使用open进行打开
(3)从游标中取值
使用fetch进行取值
(4)关闭游标
使用close关闭游标
3、创建一个简单的游标
需求:从商品表中读取第一行数据
商品表(goods)数据:
注意:我这里已经将mysql的结束标识符改为 $,如果要知道怎么设置为$,请参考前面一篇文章:mysql触发器。
定义:
输出结果:
4、多次取值操作
输出:
注意:当游标读到末尾,如果继续进行取值操作会发生报错
5、游标循环表中的所有数据
(1)使用计数器来循环
输出结果:
(2)使用越界标志来控制循环
在mysql cursor中,可以声明declare continue handler来操作1个越界标志
语法:
使用:
输出结果:
注意:这里发生了错误,这里输出了4行数据,而表中只有3行数据,而且还爆出了警告,后面会说怎么结果这个问题。
程序执行逻辑:
循环游标->fetch第三条数据->显示->fetch第四条数据->没有数据->设置have=0操作->执行continue handler->程序不退出,执行显示操作->还是显示第三条数据
6、continue和exit的区别
continue:若没有数据返回,程序继续,并将变量is_found设为0,这种情况是出现在select xx into xxx from tablename的时候发生的。
exit:若没有数据返回,退出程序,并将变量is_found设为0,这种情况是出现在select xx into xxx from tablename的时候发生的。
使用exit来替换continue:
使用exit就不会出现上面的那种情况了,程序执行逻辑:
循环游标->fetch到第三条数据->显示->第四次fetch操作->没有数据->设置 have=0操作->程序直接退出exit
所以就没有显示出第四条数据。
输出结果:
7、正确的游标循环
在一些特殊的情况中,我们可以读到的数据为空,或者压根sql语句就有错误,我们不能避免出现这种情况,所以我们要正确的使用游标循环操作。
首先应该创建游标,然后打开游标后,应先手动进行fetch操作获取到一行数据,然后再通过循环,在循环里先做处理内容,后进行fetch操作。这样如果在手动获取数据的期间就没有获得到数据的话,就会执行have = 0,如果是repeat循环,然后进入repeat循环,先输出null数据,最后又进行获取,这样运行到until时就会退出循环;如果是while循环,压根就不进去while循环里,就不会有任何1行输出。
(1)repeat循环:
输出结果:
(2)while循环:
输出结果:
希望本文所述对大家MySQL数据库计有所帮助。
原文链接:https://blog.csdn.net/baochao95/article/details/53239463
mysql 创建游标报错,MySQL游标概念与用法详解相关推荐
- mysql创建用户报错ERROR 1290
使用navicat 给mysql创建用户报错ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv op ...
- mysql登录报错error1045,mysql创建登录报错ERROR1045(28000)
.如下图(第四个): 而本人创建的用户为: Mysql> grant all on itcase.* to 'test'@'%' identified by '123456'; ...
- python装饰器详解-Python装饰器基础概念与用法详解
本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...
- mysql identity sql_SQL Server中identity(自增)的用法详解
一.identity的基本用法 1.含义 identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错 2.语法 列名 数据类型 ...
- mysql游标_MySQL游标概念与用法详解
本文实例讲述了MySQL游标概念与用法.分享给大家供大家参考,具体如下: 1.游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行.如果开发过安卓 ...
- ubuntu 找不到mysql.h_ubuntu安装了mysql 但是编译报错 mysql.h: No such file or directory
在Ubuntu体系中,已经安装了mysql,即应用sudo apt-get install mysql-server mysql-client 但是用C编译mysql数据库时,报错 fatal err ...
- mysql封装执行_解决Mysql封装类执行报错——Mysql::insert() should not be called
今天在写程序的时候使用了别的程序员写的一个Mysql封装类,但是执行后php会报错:Strict standards: Non-static method Mysql::insert() should ...
- mysql uroot p 报错,MySQL链接错误集。
一. 链接MySQL数据库报错: ERROR 1049 (42000):unknown database ';' C:\Program Files\mysql-5.6.22-winx64\bin> ...
- mysql decimal长度_mysql decimal类型与decimal长度用法详解
以下内容转自:http://blog.csdn.net/zhanghao143lina/article/details/53816884 三者的区别介绍 float:浮点型,含字节数为4,32bit, ...
最新文章
- 一款超炫酷后台权限管理系统
- Error creating bean with name 'adminUserController': Injection of autowired dependencies failed;
- oracle数据库时分秒格式_Oracle如何输出指定格式的日期时间数据呢?
- POSIX 信号量学习与思考
- 原生js写小球向右移动移动一定距离停止运动及小球加速运动
- 关于filenet中的folder以及document简单操作
- python删除word表格中的某一行_python-docx添加和删除表格行、列
- 3 个主流 Java 微服务框架,各有特色
- VBA学习笔记6:将多个工作表中满足条件的数据汇总到同一个工作表
- 5.3 使用数据结构对真实世界建模
- 自学Python+Selenium自动化测试
- 访问网站时浏览器报The requested URL ‘/‘ was not found on this server.
- 打造一款可靠的WAF(Web应用防火墙)
- 范数、损失函数、标准差
- mysql更改数据库登录密码失败;Access denied for user 'root'@'localhost;mysqladmin: connect to server at 'localhos
- java学习笔记(8) 第8章(下)- 面向对象编程(中级部分) - 练习题
- 二人成团,阿里云服务器拼团活动开启
- 重磅!iPhone 13 型号曝光
- 智能手表的机遇与挑战
- win10计算机怎么连接网络,如何创建宽带连接_win10电脑宽带连接怎么创建 - 驱动管家...