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つのストアドプロシージャから複数のプロシージャを簡単に呼び出せます。共通処理を個別のプロシージャとして分割しておけば、保守性と可読性が向上し、コードの重複も避けられます。業務システムなどで一連の処理をまとめて実行したい場合に、ぜひ活用してみてください。
-
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, ,
-
MySQLストアドプロシージャでNULLまたは空の変数をチェックする方法
MySQLのストアドプロシージャ内で、変数がNULLまたは空文字列であるかどうかを判定するには、IF条件を使用します。NULLチェックには「IS NULL」、空文字列のチェックには「= 」を組み合わせることで、どちらのケースにも対応できます。それでは、実際にストアドプロシージャを作成してみましょう。mysql> delimiter //mysql> create procedure checkingForNullDemo(Name varchar(20)) begin