性能試験などであるテーブルに大量データの作成が必要になった場合にINSERT文をループで処理できれば便利!という事で、SQLとロジックを組み合わせたストアドプロシージャでのサンプルプログラムとなります。
ストアドプロシージャ
DECLARE
-- 変数の宣言
counter NUMBER := 1;
loop_limit NUMBER := 10;
goods_id NUMBER := 1;
BEGIN
WHILE counter <= loop_limit LOOP
-- 実行するSQL
INSERT INTO USER1.GOODS (GOODS_ID,NAME,GOODS_CODE,PRICE) VALUES (goods_id,'パソコン',101,5000);
-- インクリメント
counter := counter + 1; -- カウンタをインクリメント
goods_id := goods_id + 1; -- GOODS_IDをインクリメント
END LOOP;
-- 正常終了すれば自動的にCOMMITされるため明示的なCOMMITは不要。途中で失敗した場合は全件ロールバックされる
-- DBクライアントソフトが自動コミットしない場合は明示的なCOMMITが必要
END;
上記の例では、loop_limitに指定した件数分「GOODS」テーブルへレコードを追加するサンプルコードです。
上記の例では、loop_limitを10としていますが、必要に応じて任意の数値に変更できます。
DBeaverで上記のストアドプロシージャを実行する場合は「SQLスクリプトを実行する」を選択することで正常に実行されます。
実行結果


