游标用于在检索出来的结果集中前进或后退一行或多行。MySQL中游标只能用于存储过程
1 使用步骤
创建(定义)游标,这个过程实际上没有检索数据,只是定义要使用的SELECT语句
打开游标,这个过程用前面定义的SELECT语句把数据实际检索出来。新版SQL游标打开关闭不能直接使用,需要放在存储过程中
使用游标,对于填有数据的游标,根据需要取出(检索)各行
关闭游标
2 操作
2.1 检索单行
CREATE PROCEDURE processorders(
OUT o DECIMAL (8, 2))
BEGIN
DECLARE ordernumbers CURSOR FOR
SELECT order_num FROM `order`;
-- 定义游标
OPEN ordernumbers;
-- 打开游标
FETCH ordernumbers INTO o;
-- 将第一列的值赋值给o
CLOSE ordernumbers;
-- 关闭游标
END;
#创建带游标的存储过程
CALL processorders(@order_num);
SELECT @order_num
#执行并展示复制
2.2 循环检索
CREATE PROCEDURE processorders()
BEGIN
DECLARE o int;
DECLARE done BOOLEAN DEFAULT 0;
DECLARE ordernumbers CURSOR FOR
SELECT order_num FROM `order`;
-- 定义游标
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
-- 定义CONTINUE HANDLER,当SQLSTATE '02000'(代表未找到条件)出现时,done=1
OPEN ordernumbers;
-- 打开游标
REPEAT
-- 开始循环
FETCH ordernumbers INTO o;
-- 将值赋值给o
UNTIL done END REPEAT;
-- 结束循环
CLOSE ordernumbers;
-- 关闭游标
END;
#创建带游标的存储过程复制
2.3 循环体中增加执行
CREATE PROCEDURE processorders()
BEGIN
DECLARE o int;
DECLARE done BOOLEAN DEFAULT 0;
DECLARE t DECIMAL(8,2);
DECLARE ordernumbers CURSOR FOR
SELECT order_num FROM `order`;
-- 定义游标
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
-- 定义CONTINUE HANDLER,当SQLSTATE '02000'(代表未找到条件)出现时,done=1
CREATE TABLE IF NOT EXISTS ordertotals(order_num INT,total DECIMAL(8,2));
-- 若表不存在则创建表
OPEN ordernumbers;
-- 打开游标
REPEAT
-- 开始循环
FETCH ordernumbers INTO o;
-- 将值赋值给o
CALL ordertotal(o,1,t);
-- 调用存储过程
INSERT INTO ordertotals(order_num,total)
VALUES(o,t);
--插入数据到新表
UNTIL done END REPEAT;
-- 结束循环
CLOSE ordernumbers;
-- 关闭游标
END;
CALL processorders();
#执行,生成新表并插入数据复制
文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1013次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
646次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
447次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
433次阅读
2025-04-01 20:42:12
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
372次阅读
2025-03-21 10:34:08
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
366次阅读
2025-04-11 09:38:42
天津市政府数据库框采结果公布!
通讯员
283次阅读
2025-04-10 12:32:35
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
265次阅读
2025-04-07 09:44:54
从HaloDB体验到国产数据库兼容性
多明戈教你玩狼人杀
251次阅读
2025-04-07 09:36:17
OceanBase 单机版发布,针对中小规模业务场景
通讯员
216次阅读
2025-03-28 12:01:19