云上快速入门,热门云上应用快速查找
丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
畅聊无限,分享你的技术见解
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
热门
游标repeat循环实例:
CREATEPROCEDURE`test`.`new_procedure` ()BEGIN-- 需要定义接收游标数据的变量
CREATE
PROCEDURE
`test`.`new_procedure` ()
BEGIN
-- 需要定义接收游标数据的变量
DECLAREa CHAR(16); -- 游标
DECLARE
a
CHAR
(16);
-- 游标
DECLAREcur CURSORFORSELECTi FROMtest.t; -- 遍历数据结束标志
cur
CURSOR
FOR
SELECT
i
FROM
test.t;
-- 遍历数据结束标志
DECLAREdone INTDEFAULT0; -- 将结束标志绑定到游标
done
INT
DEFAULT
0;
-- 将结束标志绑定到游标
DECLARECONTINUEHANDLER FORNOTFOUND SETdone = 1; -- 打开游标
CONTINUE
HANDLER
NOT
FOUND
SET
done = 1;
-- 打开游标
OPENcur;
OPEN
cur;
-- 开始循环 read_loop: LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCHcur INTOa; -- 声明结束的时候
FETCH
INTO
a;
-- 声明结束的时候
IF done THEN
IF done
THEN
LEAVE read_loop; ENDIF; -- 这里做你想做的循环的事件
LEAVE read_loop;
END
IF;
-- 这里做你想做的循环的事件
INSERTINTOtest.t VALUES(a); ENDLOOP; -- 关闭游标
INSERT
test.t
VALUES
(a);
LOOP;
-- 关闭游标
CLOSEcur;END
CLOSE
由于repeat循环相当于do whlie的形式,先执行再判断条件是否满足,从而导致了会多循环一次,解决方法如下
/*把do while形式的循环改成while*/
if notb then
if
not
b
then
selectvar_id;
select
var_id;
setvar_value = concat('testName:',var_id);
set
var_value = concat(
'testName:'
,var_id);
/*insertintotest values(var_id,var_value);*/
/*
insert
into
test
values
(var_id,var_value);*/
endif;
end
if;
until done=1
endrepeat;
repeat;
closecur;
close
END;
;