MySQL ストアド プロシージャは特別なデータベース コード ブロックであり、データベース セッション内で連続して複数回実行できるプリコンパイル済みの SQL ステートメントのセットです。ストアド プロシージャは、ユーザーからの入力パラメータを受け入れ、出力パラメータと結果セットを返すことができるため、データベース アプリケーションで広く使用されています。
MySQL ストアド プロシージャでは、ループ構造が不可欠です。ループ構造により、ストアド プロシージャは特定の条件または時間に従ってコードのセクションを繰り返し実行できます。 MySQL は、WHILE ループと FOR ループという 2 種類のループ構造をサポートしています。今回はFORループについて紹介します。
FOR ループは、MySQL ストアド プロシージャでも使用できる古典的なループ構造です。 FOR ループ文の基本的な構文は次のとおりです:
FOR initial_expression, test_expression, increment_expression DO statements; END FOR;
このうち、initial_expression はループ カウンタの初期値を定義し、test_expression はループの終了条件を定義し、increment_expression はそれぞれのカウンタの増分を定義します。ループ。 FOR ステートメントでは、initial_expression と increment_expression には任意の式を指定できますが、test_expression は TRUE または FALSE を返す式である必要があります。
MySQL では、FOR ループをネストして、より複雑な制御構造を実装できます。以下は、FOR ループを使用して 1 ~ 10 の数値を出力する簡単な例です:
DELIMITER // CREATE PROCEDURE sample_for_loop() BEGIN DECLARE counter INT DEFAULT 1; FOR counter IN 1..10 DO SELECT counter; END FOR; END// DELIMITER ;
この例では、sample_for_loop という名前のストアド プロシージャを定義し、DECLARE ステートメントを使用して counter という名前の整数を宣言します。変数を取得して 1 に初期化します。次に、FOR ループ構造で SELECT ステートメントを使用して、カウンターの現在の値を出力します。この例では、ループが 10 回実行され、1 ~ 10 の数値が出力されます。
基本的な FOR ループ構造に加えて、MySQL にはループ構造の制御に役立つステートメントもいくつか用意されています。たとえば、ループ構造の早い段階でループを終了するには、LEAVE ステートメントを使用します。現在のループ内の反復をスキップするには、CONTINUE ステートメントを使用します。 FOR ループで LEAVE ステートメントと CONTINUE ステートメントを使用できる例を次に示します。
DELIMITER // CREATE PROCEDURE sample_loop_with_control() BEGIN DECLARE counter INT DEFAULT 1; FOR counter IN 1..10 DO IF counter = 5 THEN LEAVE; END IF; IF counter BETWEEN 3 AND 6 THEN CONTINUE; END IF; SELECT counter; END FOR; END// DELIMITER ;
この例では、IF ステートメントを使用してカウンターの現在値を確認します。カウンタが 5 の場合は、LEAVE ステートメントを使用してループを早期に終了します。カウンタが 3 ~ 6 の場合は、CONTINUE ステートメントを使用して現在の反復をスキップします。他の場合には、SELECT ステートメントを使用してカウンターの値を出力します。
FOR ループは、MySQL ストアド プロシージャで最も一般的に使用される制御構造の 1 つです。 FOR ループを使用することで、大規模なデータセットを効果的に処理し、データ処理の効率を向上させることができます。 FOR ループを使用する場合は、ループ カウンタの初期値と増分を制御すること、ループを終了して反復をスキップするステートメントを使用してループの実行を制御することなど、いくつかの詳細に注意する必要があります。
以上がループ用のmysqlストアドプロシージャの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。