MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLストアドプロシージャでIF…THEN…ENDIFステートメントを使ってレコードを表示する方法

MySQLのストアドプロシージャ内でIF…THEN…ENDIFステートメントを使用すると、条件に応じて異なる処理を実行できます。本記事では、実際にテーブルを作成し、条件分岐を含むストアドプロシージャを定義して、レコードの挿入や表示を切り替える方法を解説します。

1. サンプルテーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable643 (ClientId int);
Query OK, 0 rows affected (0.86 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを追加します。

mysql> insert into DemoTable643 values(1000);
Query OK, 1 row affected (0.19 sec)

3. レコードの確認

SELECTステートメントで、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable643;

実行すると、以下のような結果が得られます。

+----------+
| ClientId |
+----------+
| 1000     |
+----------+
1 row in set (0.00 sec)

4. IF…THEN…ENDIFを使ったストアドプロシージャの作成

ここが本記事のポイントです。IF THEN END IF構文を含むストアドプロシージャを作成するクエリは以下のとおりです。

mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_DEMO(argument int)
    BEGIN
    DECLARE firstArgument int;
    DECLARE secondArgument int;
    set firstArgument=0;
    set secondArgument=1;
    IF firstArgument=argument THEN
       insert into DemoTable643 values(2000);
    END IF;
    IF secondArgument=argument THEN
    select *from DemoTable643;
       END IF;
    END
    //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;

このストアドプロシージャの動作は以下のとおりです。

  • 引数が0の場合:テーブルにClientId「2000」のレコードを挿入します。
  • 引数が1の場合:テーブル内のすべてのレコードを表示します。

5. ストアドプロシージャの呼び出し

CALLコマンドを使ってストアドプロシージャを呼び出します。まず、引数に「0」を指定して実行します。

mysql> call IF_DEMO(0);
Query OK, 1 row affected (0.17 sec)

これにより、新しいレコードが挿入されました。次に、引数に「1」を指定して呼び出すことで、ストアドプロシージャ内のすべてのレコードを表示します。

mysql> call IF_DEMO(1);

実行結果は以下のとおりです。

+----------+
| ClientId |
+----------+
| 1000     |
| 2000     |
+----------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)

まとめ

このように、MySQLのストアドプロシージャではIF…THEN…ENDIFステートメントを活用することで、引数の値に応じてレコードの挿入や表示といった処理を柔軟に分岐させることができます。複数のIF文を組み合わせれば、より複雑な条件分岐のロジックも実装可能です。

  1. MySQLで複数のキーワードに一致するレコードを抽出する方法|RLIKE演算子の使い方を解説

    RLIKE演算子を使った複数条件でのレコード絞り込み MySQLで複数の単語(キーワード)のいずれかに一致するレコードを抽出したい場合は、RLIKE演算子を使用します。RLIKEは正規表現によるパターンマッチングを行う演算子で、|(パイプ)で区切ることで、OR条件のように複数の値を指定できます。 基本的な構文は以下のとおりです。 SELECT * FROM yourTableName WHERE yourColumnName RLIKE yourValue1|yourValue2; サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> CREATE

  2. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT