MySQL 存储过程循环遍历

分类:技术文档 - PHP文档 | 阅读(3301) | 发布于:2014-08-21 15:43

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'


本文出自 http://blog.csdn.net/oraclemch/article/details/5746572

标签:mysql循环