INパラメータを使用したMySQLストアドプロシージャの作成方法を徹底解説
MySQLのストアドプロシージャでは、INパラメータを使うことで、呼び出し時に値を渡し、その値に基づいた処理を実行できます。ここでは、具体的な例を通じてINパラメータ付きストアドプロシージャの作成方法をわかりやすく解説します。
サンプルテーブル「student_info」の準備
まず、理解を深めるために、以下のデータを持つ「student_info」テーブルを使用します。
mysql> Select * from student_info; +-----+---------+------------+------------+ | id | Name | Address | Subject | +-----+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | | 125 | Raman | Shimla | Computers | +-----+---------+------------+------------+ 4 rows in set (0.00 sec)
INパラメータ付きストアドプロシージャの作成
次に、以下のクエリを実行して、学生の名前をパラメータとして渡すと、その学生のすべての詳細情報を表示するストアドプロシージャを作成します。
mysql> DELIMITER // ;
mysql> Create PROCEDURE detail(IN S_Name VARCHAR(20))
-> BEGIN
-> SELECT * From Student_info WHERE Name = S_Name;
-> END //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;
このストアドプロシージャ「detail」において、S_Name がINパラメータとして定義されています。プロシージャが呼び出されると、渡された名前と一致するレコードが student_info テーブルから検索され、結果として表示されます。
ストアドプロシージャの実行例
それでは、実際にプロシージャを呼び出して動作を確認してみましょう。学生「Gaurav」の詳細情報を取得するには、以下のクエリを実行します。
mysql> CALL detail('Gaurav');
+-----+--------+---------+------------+
| id | Name | Address | Subject |
+-----+--------+---------+------------+
| 105 | Gaurav | Jaipur | Literature |
+-----+--------+---------+------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
同様に、別の名前を指定して呼び出すこともできます。例えば「Raman」を指定した場合の実行結果は以下の通りです。
mysql> CALL detail('Raman');
+-----+-------+---------+-----------+
| id | Name | Address | Subject |
+-----+-------+---------+-----------+
| 125 | Raman | Shimla | Computers |
+-----+-------+---------+-----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
まとめ
このように、INパラメータを使用したストアドプロシージャを作成すれば、名前などの条件値を引数として渡すだけで、柔軟にデータを取得できます。同じような検索処理を繰り返し実行する場合、ストアドプロシージャを活用することでSQLの再利用性が高まり、アプリケーション側のコードもシンプルになります。
-
【MySQL入門】RIGHT JOINを使ってビュー(VIEW)を作成する方法を実例付きで解説
MySQLでは、RIGHT JOIN(右外部結合)を使用したSELECT文からもビュー(VIEW)を作成できます。本記事では、「Customers」テーブルと「Reserve」テーブルのデータを例に、RIGHT JOINによるビュー作成の手順を具体的に解説します。 使用するサンプルデータ まず、例として使用する2つのテーブルの内容を確認しておきましょう。「Customers」には顧客情報が、「Reserve」には車の予約履歴が格納されています。 mysql> Select * from Customers; +-------------+----------+ | Customer_
-
MySQLのDELIMITER(区切り文字)を使ってストアドプロシージャを作成・実行する方法
MySQLでは、CREATE PROCEDUREコマンドを使用することでストアドプロシージャを作成できます。ストアドプロシージャの中には複数のSQL文が含まれますが、そのまま定義すると文の区切りを示すセミコロン(;)がプロシージャ本体の途中で解釈されてしまいます。そこで、一時的に区切り文字を変更する必要があります。 基本的な構文 delimiter // CREATE PROCEDURE yourStoreProcedureName() BEGIN -- ここで変数を宣言します -- クエリ文を記述します END // delimiter ; ストアドプロシージャの作成例 上