mysql基础五 游标
admin
2023-05-02 13:44:03
0

一、游标的定义:

create procedure p12()
begin

declare row_name varchar(20);
declare row_num int;

declare myCursor cursor for select name,num from goods;//定义游标myCursor

open myCursor;//打开游标myCursor

fetch myCursor into row_name,row_num;//使用游标myCursor获取第一行

select row_name, row_num;

fetch myCursor into row_name,row_num;//使用游标myCursor获取第二行;每fetch一次游标就自动往下游一次.

select row_name, row_num;

close myCursor;//关闭游标myCursor

end;

二、游标+repeat循环-->实现遍历行:
create procedure p13()
begin

declare row_gid int;
declare row_name varchar(20);
declare row_num int;

declare row_count int;
declare i int default 0;

declare myCursor cursor for select gid,name,num from goods;

select count(1) into row_count from goods;

open myCursor;

repeat

fetch myCursor into row_gid,row_name,row_num;

select row_gid,row_name,row_num;

set i=i+1;

until i>row_count end repeat;

close myCursor;

end;

三、游标+continue handler实现遍历行:

continue handler 当fetch触发此handler后,后面的语句继续执行。
所以会多执行一次select row_gid,row_name,row_num;
此handler常用。

create procedure p15()

begin

declare row_gid int;
declare row_name varchar(20);
declare row_num int;
declare you int default 1;

declare myCursor cursor for select gid,name,num from goods;

declare continue handler for NOT FOUND set you=0;

open myCursor;

repeat

fetch myCursor into row_gid,row_name,row_num;

select row_gid,row_name,row_num;

until you=0 end repeat;

close myCursor;

end;

四、游标+exit handler实现遍历行:

exit handler 当fetch触发此handler后,触发后后面的语句不再执行。
所以select row_gid,row_name,row_num;不会再被执行。
此handler不常用。

create procedure p16()

begin

declare row_gid int;
declare row_name varchar(20);
declare row_num int;
declare you int default 1;

declare myCursor cursor for select gid,name,num from goods;

declare exit handler for NOT FOUND set you=0;

open myCursor;

repeat

fetch myCursor into row_gid,row_name,row_num;

select row_gid,row_name,row_num;

until you=0 end repeat;

close myCursor;

end;

五、游标+while实现遍历行:

create procedure p15()

begin

declare row_gid int;
declare row_name varchar(20);
declare row_num int;
declare over int default 1;

declare myCursor cursor for select gid,name,num from goods;

declare continue handler for NOT FOUND set over =0;

open myCursor;

fetch myCursor into row_gid,row_name,row_num;

while over do

select row_gid,row_name,row_num;

fetch myCursor into row_gid,row_name,row_num;

end while;

close myCursor;

end;

六、游标+loop实现遍历行:

-- loop 与 leave,iterate 实现循环
-- loop 标志位无条件循环;leave 类似于Java break 语句,跳出循环,即跳出 begin end;
iterate 类似于java continue ,结束本次循环,继续下一次循环。
--loop的优点在于可以根据条件结束本次循环或者根据条件跳出循环。

create procedure p17()

begin

declare row_gid int;
declare row_name varchar(20);
declare row_num int;
declare over int default 0;

declare myCursor cursor for select gid,name,num from goods;

declare continue handler for NOT FOUND set over=1;

open myCursor;

cursor_loop:loop

fetch myCursor into row_gid,row_name,row_num;

if over then

leave cursor_loop;

end if;

select row_gid,row_name,row_num;

end loop cursor_loop;

close myCursor;

end;

相关内容

热门资讯

国家数据局:支持地方通过“以数... 记者从国家数据局了解到,“数据要素×”城市行活动今天在南京启动,国家层面将支持各地积极挖...
河南多地出现巨大“不明飞行物”... 5月12日晚8点左右,安阳、新乡、焦作……河南多地夜空中出现一团发光“水母云”。这到底是什么东西呢?...
外交部:中方欢迎特朗普总统对中... 5月13日,外交部发言人郭嘉昆主持例行记者会。有记者就美国总统特朗普访华行前的相关言论提问。郭嘉昆表...
外交部质问日本右翼势力:是要打... 外交部:日本重走军国主义的回头路是一条不归路5月13日,外交部发言人郭嘉昆主持例行记者会。有记者问:...
2025年许昌市国民经济和社会... 【大河财立方消息】 5月12日,许昌市统计局、国家统计局许昌调查队发布2025年许昌市国民经济和社会...
我国首条深水油气装备工艺管线智... (来源:中国水运网) 转自:中国水运网 5月10日,海洋石油工程股份有限公司(简称“海油工程”)发布...
成都中科唯实申请一种真空蝶阀专... 国家知识产权局信息显示,成都中科唯实仪器有限责任公司申请一项名为“一种真空蝶阀”的专利,公开号CN1...
华为充电宝怎么样?西圣、图拉斯... 现如今市面上的选择可见是越来越多了,但“踩雷”情况也很常见:有的看起来容量大、实际给手机充电虚标非常...
智己汽车充电地图接入华为超充 ... 【CNMO科技消息】5月13日,智己汽车宣布,华为超充已正式上线其充电地图服务。即日起,智己用户可通...
爆火短剧《enemy》导演否认... 近日,短剧《enemy》凭借震撼人心的台词与浓烈的家国情怀爆火出圈。据钱江视频,5月13日,《ene...