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

MySQLストアドプロシージャにおけるEND IFステートメントの正しい書き方と実装例

MySQLのEND IFステートメントとは

MySQLのストアドプロシージャ内で条件分岐(IF文)を記述する場合、必ず「END IF」でブロックを閉じる必要があります。END IFを忘れると構文エラーが発生し、プロシージャを作成できません。

END IFの基本構文

IF〜ELSE文におけるEND IFの基本的な書き方は以下の通りです。

IF 条件式 THEN
    条件が真の場合に実行する処理
ELSE
    条件が偽の場合に実行する処理
END IF;

ストアドプロシージャ作成時の実装デモ

ここでは、引数として渡された数値が10未満かどうかを判定するストアドプロシージャを作成してみましょう。まず、DELIMITERを変更してプロシージャ本体を定義します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE Sp_Test( IN value INT )
    -> BEGIN
    -> IF value < 10 THEN
    -> select '入力値は10より小さいです';
    -> ELSE
    -> select '入力値は10より大きいです';
    -> END IF;
    ->
    -> END //
Query OK, 0 rows affected (1.47 sec)
mysql> DELIMITER ;

このように、IF文の最後にセミコロンを付けた「END IF;」を記述することで、条件分岐ブロックが正しく終了します。作成後はDELIMITERを元の「;」に戻すことを忘れないようにしましょう。

ストアドプロシージャの呼び出し方法

作成したストアドプロシージャは、CALLコマンドを使って呼び出します。

CALLコマンドの構文

CALL ストアドプロシージャ名(引数);

実際の呼び出し例

先ほど作成したSp_Testに「15」を渡して呼び出してみます。

mysql> CALL Sp_Test(15);

実行結果

+-------------------------------+
| 入力値は10より大きいです      |
+-------------------------------+
| 入力値は10より大きいです      |
+-------------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

引数に15を渡したため、value < 10 の条件が偽と判定され、ELSE側の処理が実行されていることがわかります。

まとめ

MySQLのストアドプロシージャでIF文を使用する際のポイントは以下の3つです。

  • IF文は必ず「END IF;」で閉じる
  • プロシージャ定義時はDELIMITERを「//」などに変更する
  • 定義完了後はDELIMITERを元に戻す

これらを守ることで、条件分岐を含むストアドプロシージャをエラーなく作成・実行できます。

  1. MySQLストアドプロシージャでIF-ELSEを実装する方法

    MySQLのストアドプロシージャ内で条件分岐を行いたい場合、IF-ELSE構文を使用します。この記事では、基本構文から実際のストアドプロシージャの作成・実行まで、サンプルコード付きでわかりやすく解説します。IF-ELSEの基本構文ストアドプロシージャ内でif-elseを実装するには、以下の構文を使用します。if yourCondition then yourStatement1; else yourStatement2; end if;条件式(yourCondition)が真(TRUE)の場合は最初のステートメントが実行され、偽(FALSE)の場合はelse以降のステートメント

  2. MySQLストアドプロシージャでDELIMITER(区切り文字)を正しく使って値を挿入する方法

    MySQLでストアドプロシージャを作成する際、DELIMITER(区切り文字)の扱いに戸惑う方は少なくありません。デフォルトではMySQLクライアントがセミコロン「;」を文の終端として解釈するため、プロシージャ内の複数のSQL文が途中で分割されてしまうことがあります。本記事では、区切り文字を正しく変更しながら、ストアドプロシージャを使ってテーブルへ値を挿入する具体的な手順を解説します。 1. サンプルテーブルを作成する まず、データを挿入するためのテーブルを作成します。ここでは学生の名前と姓を格納するテーブルを用意しました。 mysql> create table DemoTable