12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-24 19:12:24
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
什么是游标:如果你前面看过mysql函数,会发现无法使用返回多行结果的语句。但如果你又确实想要使用时,就需要使用到游标,游标可以帮你选择出某个结果(这样就可以做到返回单个结果)
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
什么是游标:
如果你前面看过mysql函数,会发现无法使用返回多行结果的语句。但如果你又确实想要使用时,就需要使用到游标,游标可以帮你选择出某个结果(这样就可以做到返回单个结果)。另外,使用游标也可以轻易的取出在检索出来的行中前进或后退一行或多行的结果。游标可以遍历返回的多行结果。补充:Mysql中游标只适用于存储过程以及函数。create procedure p1()begindeclare 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()begindeclare 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()begindeclare 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()begindeclare 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 continueleave l2;end if;-- 这里是为了显示获取结果insert into class2 values(id,name);-- 关闭游标end loop;close mc;end;call p3();-- 不报错select * from class2;
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19