mysql ストアド プロシージャには 3 種類のループ ステートメントがあります: 1. WHILE ループ ステートメント、構文「WHILE 条件式 DO ループ ステートメント END WHILE」; 2. REPEAT ループ ステートメント、構文「REPEAT ループ ステートメント UNTIL 条件式」 END REPEAT"; 3. LOOP ループ ステートメント、構文 "[begin_label:] LOOP 条件とループ ステートメントのリスト END LOOP [end_label]"。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
MySQL には、条件に基づいて SQL コードのセクションを繰り返し実行できるループ ステートメントが用意されています。 MySQL には、WHILE、REPEAT、LOOP の 3 種類のループ ステートメントがあります。
WHILE ループ
WHILE ステートメントの構文は次のとおりです。
WHILE expression DO statements END WHILE
WHILE ループ チェック expression
の各反復の開始。 expression
が TRUE
と評価された場合、MySQL は statements
の評価の間に WHILE
を実行し、# # まで END WHILE
を実行します。 #expressionFALSE
になるまで評価されます。 WHILE ループは、
statements が実行される前に式をチェックするため、事前テスト ループと呼ばれます。
DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_while_loop$$ CREATE PROCEDURE test_mysql_while_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; WHILE x <= 5 DO SET str = CONCAT( str, x, ',' ); SET x = x + 1; END WHILE; SELECT str; END $$ DELIMITER ;
上記のストアド プロシージャ test_mysql_while_loop では:
test_mysql_while_loop ストアド プロシージャをテストしてみましょう:
CALL test_mysql_while_loop();
出力結果:
REPEAT ループ ステートメントの構文は次のとおりです。
REPEAT statements UNTIL expression END REPEAT
statements
を実行し、次にexpression# を評価します。 ##。 expression
が FALSE
と評価される場合、MySQL statements
は expression
が TRUE と評価されるまで繰り返し実行されます。 REPEAT ループ ステートメント
expression
は実行後に
をチェックするため、REPEAT ループ ステートメントはポストテスト ループとも呼ばれます。 次のフローチャートは、REPEAT ループ ステートメントを示しています。
DELIMITER $$ DROP PROCEDURE IF EXISTS mysql_test_repeat_loop $$ CREATE PROCEDURE mysql_test_repeat_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; REPEAT SET str = CONCAT( str, x, ',' ); SET x = x + 1; UNTIL x > 5 END REPEAT; SELECT str; END $$ DELIMITER ;
CALL mysql_test_repeat_loop();
出力結果:
LOOP、LEAVE、および ITERATE ステートメント
はい2 つのステートメントを使用してループを制御できます。
LEAVE ステートメントを使用すると、条件の確認を待たずにループをすぐに終了できます。 LEAVE ステートメントは、PHP、C/C、Java などの他の言語の Break ステートメントと同様に機能します。DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_loop $$ CREATE PROCEDURE test_mysql_loop() BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; loop_label :LOOP IF x > 10 THEN LEAVE loop_label; END IF; SET x = x + 1; IF ( x MOD 2 ) THEN ITERATE loop_label; ELSE SET str = CONCAT( str, x, ',' ); END IF; END LOOP; SELECT str; END $$ DELIMITER ;
call test_mysql_loop();
この例では,
mysql ビデオ チュートリアル
]以上がmysql ストアド プロシージャのループ ステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。