MySQL の For ループ: 構文と使用法を理解する
MySQL では、LOOP ステートメントにより、特定の条件が満たされるまでコード ブロックを繰り返し実行できます。 。ただし、指定された例で示されているように、LOOP 構文を単独で使用すると、誤った動作が発生する可能性があります。
MySQL でループを定義するには、格納されたファイル内で WHILE...LOOP 構文を使用することが不可欠です。手順。修正された例は次のとおりです:
DELIMITER $$ CREATE PROCEDURE ABC() BEGIN DECLARE a INT Default 0 ; simple_loop: WHILE a < 5 DO SET a=a+1; select a; END WHILE simple_loop; END $$
この修正された構文により、条件「a
LOOP 構文を条件なしで使用すると、無限ループに入る可能性があることに注意することも重要です。
WHILE...LOOP 構文の正しい使用法を示すために、ランダムなテーブルを生成する次の例を考えてみましょう。値:
-- Create a table to store random values DROP TABLE IF EXISTS foo; CREATE TABLE foo ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, val SMALLINT UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=InnoDB; -- Create a stored procedure to insert random values into the table DROP PROCEDURE IF EXISTS load_foo_test_data; DELIMITER # CREATE PROCEDURE load_foo_test_data() BEGIN DECLARE v_max INT UNSIGNED DEFAULT 1000; DECLARE v_counter INT UNSIGNED DEFAULT 0; -- Truncate the table to clear existing data TRUNCATE TABLE foo; -- Start a transaction START TRANSACTION; -- Use a WHILE loop to insert random values WHILE v_counter < v_max DO INSERT INTO foo (val) VALUES (FLOOR(0 + (RAND() * 65535))); SET v_counter = v_counter + 1; END WHILE; -- Commit the transaction to save the changes COMMIT; END # DELIMITER ; -- Call the stored procedure to insert test data CALL load_foo_test_data(); -- Select and display the values from the table SELECT * FROM foo ORDER BY id;
この例では、2 つの変数 v_max と v_counter を初期化し、それぞれ挿入する値の最大数を指定し、現在の反復を追跡します。
その後、ループが反復されます。 、v_max に達するまでランダムな値を foo テーブルに挿入します。
これらの構文ガイドラインを理解して適用することで、効果的に次のことができます。 MySQL の WHILE...LOOP 構文を使用して、反復的なタスクを処理したり、複数のデータ要素を反復処理したりします。
以上がMySQL ストアド プロシージャで WHILE...LOOP ステートメントを正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。