MySQL は LOOP ステートメントを提供します。これにより、コードのブロックを繰り返し実行でき、ループ ラベルの使用に柔軟性が加わります。ループを制御できる次の 2 つのステートメントがあります。
これにより、check を待たずにループをすぐに終了できます
これにより、その下のコード全体をスキップして、新しい反復を開始できます。
ストアド プロシージャでの LOOP ステートメントの使用を示します。次のストアド プロシージャは、2、4、6、8 などの偶数の文字列を構築します。 -
mysql> Delimiter // mysql> CREATE PROCEDURE LOOP_loop() -> BEGIN -> DECLARE A INT; -> DECLARE XYZ VARCHAR(255); -> SET A = 1; -> SET XYZ = ''; -> loop_label: LOOP -> IF A > 10 THEN -> LEAVE loop_label; -> END IF; -> SET A = A + 1; -> IF (A mod 2) THEN -> ITERATE loop_label; -> ELSE -> SET XYZ = CONCAT(XYZ,A,','); -> END IF; -> END LOOP; -> SELECT XYZ; -> END // Query OK, 0 rows affected (0.07 sec)
このプロシージャを呼び出すと、次の結果が表示されます。 -
mysql> DELIMITER ; mysql> CALL LOOP_loop (); +-------------+ | XYZ | +-------------+ | 2,4,6,8,10, | +-------------+ 1 row in set (0.04 sec) Query OK, 0 rows affected (0.04 sec)
上記のクエリでは、A の値が 10 より大きい場合、ループが発生します。 LEAVE ステートメントを終了します。 A の値が奇数の場合、ITERATE ステートメントはそれ以下のものをすべて無視し、新しい反復を開始します。 A の値が偶数の場合、ELSE ステートメントのブロックは偶数を使用して文字列を構築します。
以上がMySQL LOOP ステートメントはストアド プロシージャでどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。