ここではMySQLで、ループでINSERT文を実行する方法について紹介しています。
ループでINSERT文を実行する方法
ストアドプロシージャ(PROCEDURE)を使うことで、ループを使って繰り返しINSERT文を処理することが出来ます。
次のテーブルを作成し、実際にPROCEDUREを作成し実行してみます。
create table tab(
col1 int
,col2 varchar(10)
);
次のプロシージャでループしてINSERT文を実行しています。
引数「i」で登録したい件数を渡します。
「cnt」変数でデータの件数をカウントしていき、登録したい件数「i」に到達するまで繰り返しINSERT文を実行していきます。
drop procedure if exists test_loop;
delimiter //
create procedure test_loop(in i int)
begin
declare cnt int default 0;
while cnt < i do
set cnt = cnt + 1;
insert into tab values(cnt,'test');
end while;
end
//
実際に試してみます。
CALLコマンドを使って、先ほどのプロシージャを呼び出します。引数は5を指定し、5件登録させます。
mysql> call test_loop(5);
Query OK, 1 row affected (0.04 sec)
5件登録されていることが確認できました。
mysql> SELECT * FROM tab;
+------+------+
| col1 | col2 |
+------+------+
| 1 | test |
| 2 | test |
| 3 | test |
| 4 | test |
| 5 | test |
+------+------+
5 rows in set (0.01 sec)