この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHILE、REPEAT、および LOOP) の使用方法を説明します。ご参考までに、詳細は以下の通りです。 MySQL には、条件に基づいて SQL コード ブロックを繰り返し実行できるループ ステートメントが用意されています。ループ ステートメントには、WHILE、REPEAT、および LOOP の 3 つがあります。これらを 1 つずつ見ていきましょう。まず、WHILE ステートメントの構文を見てみましょう。 WHILE式DO 声明 終了中 WHILE ループは、各反復の開始時に式をチェックします。 expressionevaluates が TRUE の場合、MySQL は、expressionevaluates が FALSE になるまで、WHILE と END WHILE の間のステートメントを実行します。 WHILE ループは、実行前に常にステートメントの式をチェックするため、事前テスト条件ループと呼ばれます。フローチャートを見てみましょう: 次に、ストアド プロシージャで WHILE ループ ステートメントを使用してみます。例を見てみましょう。 区切り文字 $$ 存在する場合はプロシージャを削除する test_mysql_while_loop$$ プロシージャ test_mysql_while_loop() を作成します。 始める x INT を宣言します。 str VARCHAR(255)を宣言します。 x = 1 に設定します。 str = '' を設定します。 x <= 5 の場合 SET str = CONCAT(str,x,','); x = x + 1 を設定します。 終了しながら; 文字列を選択します。 終わり$$ 区切り文字 ; 上記の test_mysql_while_loop ストアド プロシージャでは、x 変数の値が 5 より大きくなるまで str 文字列を繰り返し構築し、select ステートメントを使用して最終文字列を表示します。 x 変数の値が初期化されていない場合、そのデフォルト値は NULL になることに注意してください。 したがって、WHILE ループ ステートメント内の条件は常に TRUE となり、予測できない無期限ループが発生します。では、これ以上長々とせずに、test_mysql_while_loopstored ストアド プロシージャを呼び出してみましょう。 test_mysql_while_loop() を呼び出します。 上記のクエリステートメントを実行すると、次の結果が得られます。 mysql> test_mysql_while_loop() を呼び出します。 +------------+ | 文字列 | +------------+ | 1,2,3,4,5, | +------------+ セット内の1行 クエリは正常です。影響を受けた行は 0 行です 最後に、REPEAT ループ ステートメントの文法構造を見てみましょう。 繰り返す 声明; UNTIL式 繰り返し終了 上記の SQL は、最初に MySQL によって実行されます。その後、MySQL は式を評価します。式が FALSE の場合、MySQL は式が TRUE になるまでステートメントを繰り返し実行します。 REPEAT ループ ステートメントはステートメントの実行後に式をチェックするため、REPEAT ループ ステートメントはテスト後ループとも呼ばれます。フローチャートを見てみましょう: 完了したら、REPEAT ループ ステートメントを使用して、test_mysql_while_loop ストアド プロシージャを書き換えます。 区切り文字 $$ 存在する場合はプロシージャを削除してください mysql_test_repeat_loop$$ プロシージャ mysql_test_repeat_loop() を作成します。 始める x INT を宣言します。 str VARCHAR(255)を宣言します。 x = 1 に設定します。 設定文字列 = ''; 繰り返す SET str = CONCAT(str,x,','); x = x + 1 を設定します。 x > 5 になるまで 繰り返し終了; 文字列を選択します。 終わり$$ 区切り文字 ; UNTIL 式にはセミコロン (;) がないことに注意してください。上記のクエリステートメントを実行すると、次の結果が得られます。 mysql> mysql_test_repeat_loop() を呼び出します。 +------------+ | 文字列 | +------------+ | 1,2,3,4,5, | +------------+ セット内の1行 クエリは正常です。影響を受けた行は 0 行です 最後に、LOOP ステートメントの使用例を見てみましょう。 プロシージャ test_mysql_loop() を作成します。 始める x INT を宣言します。 str VARCHAR(255)を宣言します。 x = 1 に設定します。 設定文字列 = ''; loop_label: ループ x > 10の場合 loop_labelを終了します。 終了の場合; x = x + 1 を設定します。 (x mod 2) ならば loop_label を反復します。 それ以外 SET str = CONCAT(str,x,','); 終了の場合; ループを終了; 文字列を選択します。 終わり; 上記SQLの具体的な機能は以下のとおりです。
上記のクエリステートメントを実行すると、次の結果が得られます。 mysql> test_mysql_loop() を呼び出します。 +-------------+ | 文字列 | +-------------+ | 2,4,6,8,10, | +-------------+ セット内の1行 クエリは正常です。影響を受けた行は 0 行です ここで、制御ループの 2 つのキーワードを見てみましょう。
さて、この記録についてはこれですべてです。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL ストアド プロシージャ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、および「MySQL データベース ロック関連スキルの概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Linux 環境変数の設定方法のまとめ (.bash_profile と .bashrc の違い)
JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...
目次1. 二重連結リストとは何か2. 双方向リンクリストのカプセル化3. 双方向リンクリストの一般的...
序文今日は、Prince が Windows で負荷分散に Nginx + Tomcat を使用する...
まず、フォームを送信するいくつかの方法を見てみましょう。 1. <!--一般的な送信ボタン--...
この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...
ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...
目次1. Consulクラスタをデプロイする1. 準備3. Consulクラスタを作成する4. 管理...
IE6 での CSS 背景画像のちらつきバグ (IE6 の背景画像キャッシュの問題) IE6 は、背...
色はあらゆるウェブサイトにとって最も重要な要素の 1 つであり、閲覧者に大きな影響を与えるため、色の...
この記事の例では、マインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有しています...
目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...
目次問題の説明:解決策1解決策2問題の説明:ページ A と B の 2 つがあり、各ページにはget...
概要Prometheus は、HTTP プロトコルを介してリモート マシンからデータを収集し、ローカ...
この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...
MySQL フルバックアップ1. バイナリログを有効にし、データベースから分離して別々に保存する v...