mysql游标的原理与用法实例分析
作者:随风行云 时间:2024-01-15 16:33:36
本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下:
本文内容:
什么是游标
创建游标
使用游标
首发日期:2018-04-18
什么是游标:
如果你前面看过mysql函数,会发现无法使用返回多行结果的语句。但如果你又确实想要使用时,就需要使用到游标,游标可以帮你选择出某个结果(这样就可以做到返回单个结果)。
另外,使用游标也可以轻易的取出在检索出来的行中前进或后退一行或多行的结果。
游标可以遍历返回的多行结果。
补充:
Mysql中游标只适用于存储过程以及函数。
创建游标:
语法:
1.定义游标:declare 游标名 cursor for select语句;
2.打开游标:open 游标名;
获取结果:fetch 游标名 into 变量名[,变量名];
关闭游标:close 游标名;
create procedure p1()begin declare id int; declare name varchar(15); -- 声明游标 declare mc cursor for select * from class; -- 打开游标 open mc; -- 获取结果 fetch mc into id,name; -- 这里是为了显示获取结果 select id,name; -- 关闭游标 close mc; end;
create procedure p2()begin declare id int; declare name varchar(15); -- 声明游标 declare mc cursor for select * from class; -- 打开游标 open mc; -- 获取结果 loop -- 循环,将表的内容都转移到class2中 fetch mc into id,name; -- 这里是为了显示获取结果 insert into class2 values(id,name); -- 关闭游标 end loop; close mc; end;
使用游标:
游标每一次fetch都是获取一行结果,可以使用变量来获取fetch到的每一列的值
create procedure p2()begin declare id int; declare name varchar(15); -- 声明游标 declare mc cursor for select * from class; -- 打开游标 open mc; -- 获取结果 loop -- 循环,将表的内容都转移到class2中 fetch mc into id,name; -- 这里是为了显示获取结果 insert into class2 values(id,name); -- 关闭游标 end loop; close mc; end;
上面的代码会有一个报错,不断循环的话,始终会达到表的末尾,到了末尾就无法继续fetch,一般来说都要避免报错,到了末尾前会有一个mysql定义的
create procedure p3()
begin
declare id int;
declare name varchar(15);
declare flag int default 0;
-- 声明游标
declare mc cursor for select * from class;
declare continue handler for not found set flag = 1;
-- 打开游标
open mc;
-- 获取结果
l2:loop
fetch mc into id,name;
if flag=1 then -- 当无法fetch会触发handler continue
leave l2;
end if;
-- 这里是为了显示获取结果
insert into class2 values(id,name);
-- 关闭游标
end loop;
close mc;
end;
call p3();-- 不报错
select * from class2;
希望本文所述对大家MySQL数据库计有所帮助。
来源:https://www.cnblogs.com/progor/p/8875100.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
asp导出CSV格式数据
原生javascript AJAX 三级联动的实现代码
Python中常见的加密解密算法总结
在Python的Django框架中为代码添加注释的方法
Python基本知识点总结
MySQL单表百万数据记录分页性能优化技巧
![](https://img.aspxhome.com/file/2023/8/97428_0s.jpg)
JSP JavaBean的setProperty属性
TensorFlow基本的常量、变量和运算操作详解
![](https://img.aspxhome.com/file/2023/7/127677_0s.jpg)
深入SQL Cursor基本用法的详细介绍
Python实现简单的列表冒泡排序和反转列表操作示例
Pycharm 设置默认解释器路径和编码格式的操作
![](https://img.aspxhome.com/file/2023/8/128588_0s.jpg)
mysql:Can't start server: can't create PID file: No space left on device
![](https://img.aspxhome.com/file/2023/4/124864_0s.jpg)
在python3.5中使用OpenCV的实例讲解
![](https://img.aspxhome.com/file/2023/9/128569_0s.jpg)
sqlserver分页的两种写法分别介绍
Python求导数的方法
注册表单的改进分解
![](https://img.aspxhome.com/file/UploadPic/20085/31/2008531172251994s.gif)
asp如何连接MYSQL数据库?
Python基础之logging模块知识总结
vue百度地图 + 定位的详解
![](https://img.aspxhome.com/file/2023/0/123020_0s.png)
解决PyCharm 中写 Turtle代码没提示以及标黄的问题
![](https://img.aspxhome.com/file/2023/0/75950_0s.jpg)