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'
MySQL 存储过程循环遍历
最新推荐文章于 2024-07-03 03:27:16 发布