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′



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)