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

MySQLのIFロジックを使ってストアドプロシージャ内から別のストアドプロシージャを呼び出す方法

MySQLでは、ストアドプロシージャの中から別のストアドプロシージャを呼び出すことができます。条件に応じて異なるプロシージャを実行したい場合は、IF文を組み合わせることで実現できます。

基本構文

IFロジックを使用してストアドプロシージャ内から別のプロシージャを呼び出す場合、基本的な構文は以下のとおりです。

If yourInputValue > 100 then
    call yourProcedureName1();
else
    call yourProcedureName2();
end If;
END

入力値が100より大きい場合は1つ目のプロシージャが、そうでない場合は2つ目のプロシージャが実行される仕組みです。それでは、実際にこの構文を実装してみましょう。

サンプル用のストアドプロシージャを作成する

まず、呼び出される側となる2つのストアドプロシージャを作成します。最初のプロシージャは以下のクエリで作成できます。

mysql> delimiter //
mysql> create procedure Hello_Stored_Procedure()
   -> BEGIN
   -> select 'Hello World!!!';
   -> END
   -> //
Query OK, 0 rows affected (0.18 sec)

続いて、2つ目のストアドプロシージャを作成します。

mysql> create procedure Hi_Stored_Procedure()
   -> BEGIN
   -> select 'Hi!!!';
   -> END
   -> //
Query OK, 0 rows affected (0.17 sec)

IFロジックでプロシージャを呼び出す親プロシージャを作成する

次に、条件分岐によって上記2つのプロシージャを呼び分けるストアドプロシージャを作成します。

mysql> DELIMITER //
mysql> create procedure test(IN input int)
   -> BEGIN
   -> If input > 100 then
   -> call Hello_Stored_Procedure();
   -> else
   -> call Hi_Stored_Procedure();
   -> end If;
   -> END
   -> //
Query OK, 0 rows affected (0.18 sec)

この例では、引数 input の値が100より大きければ Hello_Stored_Procedure() が、それ以外の場合は Hi_Stored_Procedure() が実行されます。

ストアドプロシージャを実行して結果を確認する

作成したプロシージャは、CALLステートメントを使って実行できます。まずデリミタを元に戻し、引数に110を渡して呼び出してみましょう。

mysql> delimiter ;
mysql> call test(110);

引数が110(100より大きい)のため、Hello_Stored_Procedure() が実行され、以下の出力が得られます。

+----------------+
| Hello World!!! |
+----------------+
| Hello World!!! |
+----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)

このように、IF文による条件分岐を組み合わせることで、入力値に応じて異なるストアドプロシージャを柔軟に呼び分けることが可能です。業務処理の分岐やログ出力の切り替えなど、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. MySQL Workbenchでストアドプロシージャを作成・実行する方法

    MySQL Workbenchでストアドプロシージャを作成する手順 まずは、ストアドプロシージャを作成してみましょう。以下は、MySQL Workbenchを使用してストアドプロシージャを作成するためのクエリ例です。 use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE="HELLO"; SELECT CONCAT(MESSAGE, ,

  2. MySQLストアドプロシージャでNULLまたは空の変数をチェックする方法

    MySQLのストアドプロシージャ内で、変数がNULLまたは空文字列であるかどうかを判定するには、IF条件を使用します。NULLチェックには「IS NULL」、空文字列のチェックには「= 」を組み合わせることで、どちらのケースにも対応できます。それでは、実際にストアドプロシージャを作成してみましょう。mysql> delimiter //mysql> create procedure checkingForNullDemo(Name varchar(20))     begin