MySQLストアドプロシージャのループ

MySQLストアドプロシージャステートメントには、WHILEループ、LOOPループ、REPEATループの3つの標準ループがあります。非標準のループ方法GOTOもありますが、このループ方法は使用しないのが最善です。プログラムで混乱を招きやすいので、ここで紹介します。

これらのループステートメントの形式は次のとおりです
。WHILE... DO ... END WHILE
REPEAT ... UNTIL END REPEAT
LOOP ... END LOOP
GOTO。

最初に、最初のループを使用して例を記述しましょう。

コードをコピー

DROP PROCEDURE IF EXISTS `pro10`; 
DELIMITER $$ 
PROCEDURE `pro10`を(CREATE)は
BEGIN 
    -定义变量
    DECLAREのv_iをint型符号なしDEFAULT 0; 
    WHILE v_i <5 DO 
        SELECT v_i; 
        SET v_i = v_i + 1; 
    END WHILE; 
END $$ 
DELIMITER; 

CALL pro10();

コードをコピー

2番目のループ制御命令REPEAT ... END REPEATを見てみましょう。REPEATループ制御ステートメントを使用して、次のストアドプロシージャを記述します。

コードをコピー

DROP PROCEDURE IF EXISTS `pro11`; 
DELIMITER $$ 
PROCEDURE `pro11`を(CREATE)は
BEGIN 
    -定义变量
    DECLAREのv_iをint型符号なしDEFAULT 0; 
    REPEAT 
        SELECT v_i; 
        SET v_i = v_i + 1; 
    UNTIL v_i> = 5 END REPEAT; 
END $$ 
DELIMITER; 

CALL pro11();

コードをコピー

3番目のループ制御ステートメントLOOP ...... END LOOPを見てみましょう。ストアドプロシージャプログラムを次のように記述します。

コードをコピー

DROP PROCEDURE IF EXISTS `pro12`; 
DELIMITER $$ 
PROCEDURE `pro12`を(CREATE)は
BEGIN 
    -定义变量
    DECLAREのv_iをint型符号なしDEFAULT 0; 
    LOOP_LABEL:LOOP 
        SELECT v_i; 
        SET v_i = v_i + 1; 
        IF v_i> = 5 THEN 
            LEAVE LOOP_LABEL; 
        終了IF; 
    ループ終了; 
END $$ 
DELIMITER; 

CALL pro12();

コードをコピー

コードをコピー

DROP PROCEDURE IF EXISTS `pro13`; 
DELIMITER $$ 
PROCEDURE `pro13`を(CREATE)は
BEGIN 
    -定义变量
    DECLAREのv_iをint型符号なしDEFAULT 0; 
    LOOP_LABEL:LOOP 
        IF v_i = 3 THEN 
            SET v_i = v_i + 1; 
            ITERATE LOOP_LABEL; #=> 
        END IFを続行します。
        SELECT v_i; 
        SET v_i = v_i + 1; 
        IF v_i> = 5 THEN 
            LEAVE LOOP_LABEL; #=>休憩; 
        終了IF; 
    ループ終了; 
END $$ 
DELIMITER; 

CALL pro13();

コードをコピー

266の元の記事を公開 17を賞賛 10,000以上のビュー

おすすめ

転載: blog.csdn.net/qq_18671415/article/details/105410479