MySQL 存储过程循环遍历

WHILE, REPEAT, LOOP在MYSQL里都是用来作为定型文抽出而使用的,都是利用循环方式提取数据。

在这三种方法中,WHILE是在循环的初回处理开始之前进行条件判断,REPEAT是在循环结束时进行判断,而

LOOP不具备判断功能。这三种功能的使用一定要在MySQL5.05以上的版本下使用才可以。

使用方法如下:

===================================================================================
WHILE

[label:] WHILE 条件 DO
--循环处理
END WHILE [label];

使用例子
(CREATE FUNCTION,RETURN,BEGIN...END省略)

DECLARE result VARCHAR( 100 ) DEFAULT '';
DECLARE code   INT UNSIGNED   DEFAULT ASCII( 'A' ); -- A的编码
DECLARE count INT UNSIGNED   DEFAULT 0;

test: WHILE count < 5 DO     -- 到第五个文字为止循环
SET result = CONCAT( result, CHAR( code + count ) );
SET count = count + 1;
END WHILE test;

执行结果
'ABCDE'

===================================================================================

REPEAT

[label:] REPEAT
--循环处理
UNTIL 条件
END REPEAT [label];

使用例子
(CREATE FUNCTION,RETURN,BEGIN...END省略)

DECLARE result VARCHAR( 100 ) DEFAULT '';
DECLARE code   INT UNSIGNED   DEFAULT ASCII( 'A' ); -- A的编码
DECLARE count INT UNSIGNED   DEFAULT 0;

test: REPEAT
SET result = CONCAT( result, CHAR( code + count ) );
SET count = count + 1;
UNTIL count > 4   -- 到第五个文字为止循环
END REPEAT test;

执行结果
'ABCDE'

===================================================================================

LOOP

[label:] LOOP
--循环处理
END LOOP [label:];

使用例子
(CREATE FUNCTION,RETURN,BEGIN...END省略)

DECLARE result VARCHAR( 100 ) DEFAULT '';
DECLARE code   INT UNSIGNED   DEFAULT ASCII( 'A' ); -- A的编码
DECLARE count INT UNSIGNED   DEFAULT 0;

test: LOOP
IF count > 4 THEN -- 判断条件
LEAVE test;      -- 到第五个文字为止循环
END IF;
SET result = CONCAT( result, CHAR( code + count ) ); -- 文字结合
SET count = count + 1;
END LOOP test;

执行结果
'ABCDE'

=================================================================================

LOOP(ITERATE,LEAVE)

使用例子
(CREATE FUNCTION,RETURN,BEGIN...END省略)

DECLARE result VARCHAR( 100 ) DEFAULT '';
DECLARE count INT UNSIGNED   DEFAULT 0;

test: LOOP
SET count = count + 1;
-- 3倍数的时候跳到下一个系数后继续循环
IF NOT MOD( count, 3 ) THEN ITERATE test; END IF;
SET result = CONCAT( result, IF( count > 1, ', ', '' ), count );-- 结合
-- count = 到10的时候循环结束
IF count > 9 THEN LEAVE test; END IF;
END LOOP test;

执行结果
'1, 2, 4, 5, 7, 8, 10'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值