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

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文を何度も書くことなく、引数を変えるだけで柔軟にデータを挿入できます。

  1. 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

  2. MySQLストアドプロシージャでDELIMITER(区切り文字)を正しく使って値を挿入する方法

    MySQLでストアドプロシージャを作成する際、DELIMITER(区切り文字)の扱いに戸惑う方は少なくありません。デフォルトではMySQLクライアントがセミコロン「;」を文の終端として解釈するため、プロシージャ内の複数のSQL文が途中で分割されてしまうことがあります。本記事では、区切り文字を正しく変更しながら、ストアドプロシージャを使ってテーブルへ値を挿入する具体的な手順を解説します。 1. サンプルテーブルを作成する まず、データを挿入するためのテーブルを作成します。ここでは学生の名前と姓を格納するテーブルを用意しました。 mysql> create table DemoTable