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
猜你喜欢
- 在Windows下使用VSCode编译运行,都出现中文乱码的问题,今天我就遇见了这种情况,上网搜了半天也没有找到正确的解决方法,现将我把我的
- 本文实例为大家分享了python接入微信聊天机器人的具体代码,供大家参考,具体内容如下1.安装库wxpy:pip install -U wx
- 本文针对安装mysql5.7.21的笔记进行了总结,分享给大家1、将下载好的mysql压缩包解压到安装目录下2、新建文件 my.ini,放置
- 笔者在今天的工作中,遇到了一个需求,那就是如何将Python字符串生成PDF。比如,需要把Python字符串‘这是测试文件'生成为P
- SQL语句参考及记录集对象详解1. ASP与Access数据库连接:2. ASP与SQL数据库连接:建立记录集对象:set rs=serve
- 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
- 有两个结构完全相同的表,由其中一个表插入另一个表中指定条件的数据,报如下错误: 仅当使用了列列表并且 IDENTITY_INSERT 为 O
- 字符函数——返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR
- 今天使用os.path.isdir()判断是否是文件夹的时候发现一个问题:lst = os.listdir(path) &nb
- 引用计数Python 语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早 George E. Co
- 【目标需求】查看某一个字符串是否为中文字符串【解决办法】def check_contain_chinese(check_str): for
- 1. 概念显著性检测,就是使用图像处理技术和计算机视觉算法来定位图片中最“显著”的区域。显著区域就是
- tempfile.TemporaryFile如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFi
- 匿名函数lambda表达式 什么是匿名函数?匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lamb
- 很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于M
- //TransmitFile实现下载protected void Button1_Click(object sender, EventArg
- PHP PDO连接连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。连接到 MySQL<?php
- 基于 SpringBoot与SpringSecurity整合 案例的修改:数据库 user 表注,密码是由 BCrypt 算法加密对应用户名
- 系列前言这个系列是我第一个想要更下去的系列。每篇会全面介绍一个 OpenCV 函数,会给出 API 和示例。示例主要是用 Python 去写
- LNMP一键包安装的Mysql默认开启Mysql日志,如果网站对数据库读写较为频繁的话可能会产生大量日志,并占用磁盘空间,还有可