MySQL ストアド プロシージャで if ステートメントを使用する詳細な例

MySQL ストアド プロシージャで if ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの if ステートメントの使用方法を説明します。ご参考までに、詳細は以下の通りです。

MySQL の IF ステートメントを使用すると、特定の条件または式の値の結果に基づいて一連の SQL ステートメントを実行できるため、MySQL でテキスト、変数、演算子、さらには関数と組み合わせることができる式を作成する必要があります。式は、TRUE、FALSE、NULL の 3 つの値のいずれかを返すことができます。文法構造を見てみましょう:

IF式THEN
  声明;
終了の場合;

上記の式が TRUE と評価された場合、ステートメントが実行され、それ以外の場合は制御フローは END IF の後の次のステートメントに渡されます。 IF ステートメントの実行プロセスを見てみましょう。

IF ELSE ステートメントの構文を見てみましょう。

IF式THEN
  声明;
それ以外
  else ステートメント;
終了の場合;

ここで、IF ELSE ステートメントの実行プロセスを見てみましょう。

複数の式に基づいて条件付きでステートメントを実行する場合は、IF ELSE IF ELSE ステートメントを使用します。その構文構造は次のとおりです。

IF式THEN
  声明;
ELSEIF elseif式 THEN
  elseif ステートメント;
...
それ以外
  else ステートメント;
終了の場合;

式が TRUE と評価された場合、IF ブランチ内のステートメントが実行されます。式が FALSE と評価され、elseif_expression が TRUE と評価された場合、mysql は elseif-expression を実行し、それ以外の場合は ELSE ブランチ内の else-statements を実行します。具体的な実装プロセスを見てみましょう。

次に、IF ESLEIF ELSE ステートメントと GetCustomerLevel() ストアド プロシージャを使用して、顧客番号と顧客レベルの 2 つのパラメーターを受け入れます。まず、GetCustomerLevel() ストアド プロシージャは、顧客テーブルからクレジット限度額を取得する必要があります。次に、クレジット限度額に基づいて、顧客レベル (PLATINUM、GOLD、SILVER) を決定します。パラメータ p_customerlevel は顧客レベルを格納し、呼び出しプログラムによって使用されます。具体的な SQL を見てみましょう。

区切り文字 $$
CREATE PROCEDURE GetCustomerLevel(
  p_customerNumber int(11)では、
  出力 p_customerLevel varchar(10))
始める
  creditlim double を宣言します。
  クレジット制限をクレジット制限に選択する
  お客様から
  ここで、顧客番号 = p_顧客番号;
  クレジット限度額 > 50000 の場合
 p_customerLevel を 'PLATINUM' に設定します。
  ELSEIF (creditlim <= 50000 AND creditlim >= 10000) の場合
    p_customerLevel を 'GOLD' に設定します。
  ELSEIF クレジット制限 < 10000 THEN
    p_customerLevel を 'SILVER' に設定します。
  終了の場合;
終わり$$

顧客レベルを決定するロジックのフローチャートは次のとおりです。

さて、今回の共有はこれですべてです。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL ストアド プロシージャ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL ストアド プロシージャの作成、呼び出し、管理の詳細な説明
  • MySQL ストアド プロシージャのクエリ コマンドの概要
  • MySQL ストアド プロシージャの in、out、inout パラメータの例と概要
  • MySQLストアドプロシージャを変更する詳細な手順
  • カーソル ループを使用して、MySQL ストアド プロシージャで一時テーブルを読み取る
  • MySQL ストアド プロシージャ関連の権限変更の問題
  • MySQL ストアド プロシージャ (in、out、inout) の詳細な説明
  • MySQL ストアド プロシージャで月ごとにテーブルを作成する方法
  • MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明
  • MySQL ストアドプロシージャの長所と短所の分析

<<:  jQueryは画像追従効果を実現します

>>:  Alibaba Cloud Centos7.X で外部にポートを開く方法

推薦する

mysql 複数テーブル接続削除関数の削除

単一のテーブルを削除する: tableName から columnName = value を削除し...

HTML チュートリアル: HTML 水平線分

<br />このタグを使用すると、画面上に水平線を表示して、ページのさまざまな部分を区切...

Dockerを使用してLaravel開発環境を構築するための完全な手順

序文この記事では、Docker を使用して、ローカル コンピューターにインストールされている開発スイ...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

JavaScript タイマーの種類の概要

目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...

幅と高さが可変の要素を中央に配置するための CSS ソリューション

1. 水平中央公開コード: html: <div class="parent&quo...

Dreamweaver で Zen コーディングを使用する方法

前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

HTMLテキストの一般的なイベントとメソッドの詳細な説明

イベントの説明onactivate: オブジェクトがアクティブ要素として設定されたときに発生します。...

Linux で rpm パッケージを見つけるために CD をマウントする方法

前面に書かれたLinux を使用する際にソフトウェアをインストールする必要がある場合があります。もち...

Mybatisの各SQL文の実行時間の統計

背景最近、面接でデータベース トランザクションについてよく質問されます。通常は、@Transacti...

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

MySQL データベース設計 3 つのパラダイム例分析

3つのパラダイム1NF: フィールドは分離不可能です。 2NF: 主キーがあり、非主キー フィールド...

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...