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

MySQLストアドプロシージャから複数のプロシージャを呼び出す方法

MySQLでは、1つのストアドプロシージャの中から複数の別のプロシージャを呼び出すことができます。これにより、処理をモジュール化し、再利用性の高いコードを書くことが可能になります。

基本構文

まず、ストアドプロシージャ内で複数のプロシージャを呼び出すための基本構文を見てみましょう。

DELIMITER //
CREATE PROCEDURE yourProcedureName()
BEGIN
   CALL yourStoredProcedureName1();
   CALL yourStoredProcedureName2();
   .
   .
   N
END
//
DELIMITER ;

BEGIN〜ENDブロックの中に、呼び出したいプロシージャをCALL文で順番に記述するだけです。必要な数だけCALL文を追加できます。

実際の実装例

それでは、上記の構文を使って、複数のストアドプロシージャを呼び出す手順を具体的に見ていきましょう。

1. 最初のストアドプロシージャを作成する

「HELLO WORLD !!」というメッセージを表示する最初のプロシージャを作成します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE hello_message()
   -> BEGIN
   -> SELECT 'HELLO WORLD !!';
   -> END
   -> //
Query OK, 0 rows affected (0.19 sec)

2. 2つ目のストアドプロシージャを作成する

次に、「HI !!!!」というメッセージを表示する2つ目のプロシージャを作成します。

mysql> CREATE PROCEDURE hi_message()
   -> BEGIN
   -> SELECT 'HI !!!!';
   -> END
   -> //
Query OK, 0 rows affected (0.11 sec)

mysql> DELIMITER ;

3. 複数のプロシージャを呼び出す親プロシージャを作成する

ここがポイントです。先ほど作成した2つのプロシージャをまとめて呼び出す、新しい親プロシージャを作成します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE call_all_stored_procedure()
   -> BEGIN
   -> CALL hello_message();
   -> CALL hi_message();
   -> END
   -> //
Query OK, 0 rows affected (0.26 sec)

mysql> DELIMITER ;

4. 親プロシージャを実行する

準備が整ったら、作成した親プロシージャを呼び出してみましょう。

mysql> call call_all_stored_procedure();

実行すると、以下のような出力が得られます。2つのプロシージャが順番に実行され、それぞれの結果セットが表示されていることがわかります。

+----------------+
| HELLO WORLD !! |
+----------------+
| HELLO WORLD !! |
+----------------+
1 row in set (0.06 sec)

+---------+
| HI !!!! |
+---------+
| HI !!!! |
+---------+
1 row in set (0.06 sec)
Query OK, 0 rows affected (0.08 sec)

まとめ

このように、CALL文を使えば1つのストアドプロシージャから複数のプロシージャを簡単に呼び出せます。共通処理を個別のプロシージャとして分割しておけば、保守性と可読性が向上し、コードの重複も避けられます。業務システムなどで一連の処理をまとめて実行したい場合に、ぜひ活用してみてください。

  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