Oracle 複数レコードを一度に挿入する方法 複数行INSERT

スポンサーリンク
スポンサーリンク

複数行INSERTの基本構文

INSERT文は基本的に1回の実行で1行挿入されます。
しかし1回で複数行をINSERTすることができます。

INSERT ALL 
INTO <テーブル名> (列1, 列2,・・・) VALUES (値1, 値2,・・・)
INTO <テーブル名> (列1, 列2,・・・) VALUES (値1, 値2,・・・)
INTO <テーブル名> (列1, 列2,・・・) VALUES (値1, 値2,・・・)
SELECT * FROM DUAL

複数行INSERTの使用例

以下の「TEST_TABLE」テーブルを使用して検証します。

--テーブル作成
CREATE TABLE TEST_TABLE 
   (
    "ID"   VARCHAR2(10 BYTE), 
    "NAME" VARCHAR2(50 BYTE)
   )

--複数行INSERT
INSERT ALL 
INTO TEST_TABLE (ID, NAME) VALUES (1, 'いるか')
INTO TEST_TABLE (ID, NAME) VALUES (2, 'うさぎ')
INTO TEST_TABLE (ID, NAME) VALUES (3, 'ぺんぎん')
SELECT * FROM DUAL;

--複数行INSERT,列リスト省略バージョン
INSERT ALL 
INTO TEST_TABLE VALUES (1, 'いるか')
INTO TEST_TABLE VALUES (2, 'うさぎ')
INTO TEST_TABLE VALUES (3, 'ぺんぎん')
SELECT * FROM DUAL;
SQL> INSERT ALL
  2  INTO TEST_TABLE (ID, NAME) VALUES (1, 'いるか')
  3  INTO TEST_TABLE (ID, NAME) VALUES (2, 'うさぎ')
  4  INTO TEST_TABLE (ID, NAME) VALUES (3, 'ぺんぎん')
  5  SELECT * FROM DUAL;

3行が作成されました。

INSERT文のテーブル名の列リストは、テーブルの全列に対しINSERTする場合に省略できることは知っていると思います。
複数行INSERTについても同じように省略可能です。

SQL> INSERT ALL
  2  INTO TEST_TABLE  VALUES (1, 'いるか')
  3  INTO TEST_TABLE  VALUES (2, 'うさぎ')
  4  INTO TEST_TABLE  VALUES (3, 'ぺんぎん')
  5  SELECT * FROM DUAL;

3行が作成されました。

コメント

タイトルとURLをコピーしました