MySQLストアドプロシージャでカラムの値を変数に格納する方法
MySQLのストアドプロシージャ内で変数を宣言するには、DECLARE文を使用します。さらにSELECT ~ INTO構文を組み合わせることで、テーブルのカラム値を変数に格納することができます。
ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ経由でカラムの値を変数に取得する手順を解説します。
1. サンプルテーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable2034
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentAge int
-> );
Query OK, 0 rows affected (0.49 sec)
2. レコードの挿入
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> insert into DemoTable2034(StudentName,StudentAge) values('Chris',23);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable2034(StudentName,StudentAge) values('David',21);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable2034(StudentName,StudentAge) values('Robert',25);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable2034(StudentName,StudentAge) values('Mike',19);
Query OK, 1 row affected (0.14 sec)3. テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable2034;
実行結果は以下の通りです。
+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 1 | Chris | 23 |
| 2 | David | 21 |
| 3 | Robert | 25 |
| 4 | Mike | 19 |
+-----------+-------------+------------+
4 rows in set (0.00 sec)
4. ストアドプロシージャの作成
次に、テーブルのカラム値をストアドプロシージャ内の変数に格納するプロシージャを作成します。ポイントは以下の3点です。
- DECLARE: プロシージャ内で使用する変数(name)を宣言する
- SELECT ~ INTO: 条件に一致したカラムの値を宣言した変数に格納する
- delimiter: ストアドプロシージャ定義中のセミコロン区切りを変更するために設定する
mysql> delimiter //
mysql> create procedure select_into_variable(id int)
-> begin
-> declare name varchar(50);
-> select StudentName into name from DemoTable2034 where StudentId=id;
-> select concat('Your Name is= ',name);
-> end
-> //
Query OK, 0 rows affected (0.09 sec)
mysql> delimiter ;
このプロシージャでは、引数として渡されたStudentIdに一致するStudentNameを変数「name」に格納し、CONCAT関数で連結して表示しています。
5. ストアドプロシージャの呼び出し
作成したプロシージャをCALL文で実行します。
mysql> call select_into_variable(4);
実行すると、以下のような出力が得られます。
+-------------------------------+
| concat('Your Name is= ',name) |
+-------------------------------+
| Your Name is= Mike |
+-------------------------------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.06 sec)
このように、StudentId = 4 のレコードから取得した「Mike」というStudentNameの値が、変数を通じて正しく表示されました。DECLAREとSELECT ~ INTOを組み合わせれば、ストアドプロシージャ内で自由にカラム値を変数へ格納し、後続の処理に活用できます。
-
Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】
はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId
-
MySQLストアドプロシージャでNULLまたは空の変数をチェックする方法
MySQLのストアドプロシージャ内で、変数がNULLまたは空文字列であるかどうかを判定するには、IF条件を使用します。NULLチェックには「IS NULL」、空文字列のチェックには「= 」を組み合わせることで、どちらのケースにも対応できます。それでは、実際にストアドプロシージャを作成してみましょう。mysql> delimiter //mysql> create procedure checkingForNullDemo(Name varchar(20)) begin