MySQLテーブルに値を挿入するストアドプロシージャの作成方法を解説
MySQLでは、INパラメータを使用したストアドプロシージャを作成することで、テーブルへの値の挿入処理を簡単に再利用できるようになります。ストアドプロシージャを活用すれば、挿入処理をひとまとめにして、必要なときにいつでも呼び出せるため、コードの可読性と保守性が向上します。
サンプルテーブルの準備
ここでは、以下のようなデータを持つ「student_info」テーブルを例に説明します。
mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | +------+---------+------------+------------+ 4 rows in set (0.00 sec)
ストアドプロシージャの作成
次のように「insert_studentinfo」という名前のストアドプロシージャを作成します。各カラムに対応する値をINパラメータとして受け取り、INSERT文でテーブルに挿入する仕組みです。
mysql> DELIMITER // ;
mysql> Create PROCEDURE insert_studentinfo(IN p_id int, IN p_name varchar(20), IN p_Address Varchar(20), IN p_subject Varchar(20))
-> BEGIN
-> insert into student_info(id, name, address, subject) values (p_id, p_name, p_address, p_subject);
-> END //
Query OK, 0 rows affected (0.09 sec)ポイントとして、ストアドプロシージャ内で複数のSQL文を定義する場合は、あらかじめDELIMITERコマンドで区切り文字を変更しておく必要があります。これにより、MySQLクライアントがプロシージャ本体の終了位置を正しく認識できるようになります。
ストアドプロシージャの呼び出し
作成したプロシージャは、CALL文を使って呼び出します。挿入したい値を引数として渡すだけで、テーブルにデータが追加されます。
mysql> CALL insert_studentinfo(125,'Raman','Bangalore','Computers')// Query OK, 1 row affected (0.78 sec) mysql> DELIMITER ; // mysql> Select * from Student_info; +-----+---------+------------+------------+ | id | Name | Address | Subject | +-----+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | | 125 | Raman | Bangalore | Computers | +-----+---------+------------+------------+ 5 rows in set (0.00 sec)
上記の結果セットから、新しいレコード(id: 125)が正常にテーブルへ挿入されたことが確認できます。このように、INパラメータ付きのストアドプロシージャを作成しておけば、同じINSERT文を何度も書くことなく、引数を変えるだけで柔軟にデータを挿入できます。
-
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St
-
MySQLストアドプロシージャでDELIMITER(区切り文字)を正しく使って値を挿入する方法
MySQLでストアドプロシージャを作成する際、DELIMITER(区切り文字)の扱いに戸惑う方は少なくありません。デフォルトではMySQLクライアントがセミコロン「;」を文の終端として解釈するため、プロシージャ内の複数のSQL文が途中で分割されてしまうことがあります。本記事では、区切り文字を正しく変更しながら、ストアドプロシージャを使ってテーブルへ値を挿入する具体的な手順を解説します。 1. サンプルテーブルを作成する まず、データを挿入するためのテーブルを作成します。ここでは学生の名前と姓を格納するテーブルを用意しました。 mysql> create table DemoTable