子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

【SQL】【SQL Server】SQL Serverで2重ループさせてテストデータを作成するサンプル

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;

実行結果
f:id:STSA:20200304204058p:plain