MySQL社区

标题: 求助:在MYSQL中可否使用GOTO? [打印本页]

作者: 一如既往    时间: 2013-6-27 14:39
标题: 求助:在MYSQL中可否使用GOTO?
不知道MYSQL存储过程中是否支持GOTO?
label:lab1;
while(...) do
    label:lab2;
    while(...) do
        ...
        if(...){
            goto lab1;
        }
        ...
        if(...){
            goto lab2;
        }
    end while;
    ...
end while;


我在存储过程中使用GOTO报错.
如果不能,请问如何能实现类似此功能.
求指点.

作者: kider    时间: 2013-6-27 15:14
支持GOTO。
但建议不要用,会使流程混乱。

有三种标准的循环方式:
WHILE ... END WHILE
LOOP ... END LOOP
REPEAT ... END REPEAT
还有一种非标准的方式
GOTO

CREATE PROCEDURE p14 ()
BEGIN
DECLARE v INT;
SET v = 0;
WHILE v < 5 DO
INSERT INTO t VALUES (v);
SET v = v + 1;
END WHILE;
END; //

CREATE PROCEDURE p15 ()
BEGIN
DECLARE v INT;
SET v -* 0;
REPEAT
INSERT INTO t VALUES (v);
SET v = v + 1;
UNTIL v >= 5
END REPEAT;
END; //

CREATE PROCEDURE p16 ()
BEGIN
DECLARE v INT;
SET v = 0;
loop_label: LOOP
INSERT INTO t VALUES (v);
SET v = v + 1;
IF v >= 5 THEN
LEAVE loop_label;
END IF;
END LOOP;
END; //

GOTO

CREATE PROCEDURE p...
BEGIN
...
LABEL label_name;
...
GOTO label_name;
...
END;





欢迎光临 MySQL社区 (http://www.mysqlpub.com/) Powered by Discuz! X3.2