这篇文章主要为大家展示了如何使用mysql游标,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
什么是游标:
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;
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游标的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。