「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

性能試験などであるテーブルに大量データの作成が必要になった場合に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スクリプトを実行する」を選択することで正常に実行されます。

実行結果

 

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x