SQL Serverのストアドで2重ループさせてテストデータを作成してみたのでそのことについてメモ。
大量のテストデータを作成するときにSQL文を使ってデータを作成することってよくありますよね?
で、あれ?2重ループさせるときってどうするんだと思ってちょっとつまづいたのでメモとして残しておきます。
カウンタを2つ用意し、それぞれWHILEで回せばいいやっておもっていたのですがうまくいかず。
なんでだろうと思ったら、内側のループを開始する前に2つ目のカウンタを毎回初期化していなかったからでした。
初歩的なミスでしたが、忘れそうなので。
CREATE TABLE TEST_TABLE ([code] varchar(5), [q] varchar(57)) ; SET NOCOUNT ON DECLARE @BaseCount INT SET @BaseCount = 0 DECLARE @qCount INT SET @qCount = 0 WHILE @BaseCount < 2 BEGIN SET @qCount = 0 WHILE @qCount < 4 BEGIN INSERT INTO TEST_TABLE ([code], [q]) VALUES ('CODE' + convert(varchar, @BaseCount), 'Q' + right('0000000000' + convert(varchar, @qCount), 10) ) SET @qCount = @qCount + 1 END SET @BaseCount = @BaseCount + 1 END select * from TEST_TABLE;
実行結果