一般セットの構文:
INSERT INTO table-name |
拡張セットの構文:
INSERT INTO table-name |
( |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:データベースへのアクセスと更新
SQL INSERT
ステートメントは、1 つ以上の行をテーブルに新しく追加するために使用します。
構文要素 | 説明 |
---|---|
INTO
table-name |
INTO 節:
詳細については、 |
column-list |
列リスト:
構文: column-name...
|
VALUES-clause |
VALUES 節:
下記の「VALUES 節」を参照してください。 |
OVERRIDING USER
VALUE |
OVERRIDING USER VALUE 節:
この節は SQL 拡張セットに含まれます。 この節は現在はサポートされていません。使用すると、コンパイラエラーが発生します。 |
VALUES
節を使用して、1 つの行をテーブルに挿入します。アスタリスク(*)が指定されているか、または column-list
が指定されているかによって、VALUES
節の形式は次のいずれかになります。
VALUES (VIEW view-name)
|
アスタリスク表記を指定する場合、VALUES
節にビューを指定する必要があります。このビューのフィールド値により、ビューのフィールド名を列名として使用して、新しい行が指定したテーブルに挿入されます。
VALUES (
|
) |
column-list
を指定し、VALUES
節でビューを参照する場合、列リストに指定する項目数は、VALUE-LIST 内のビューに定義されたフィールド数に対応する必要があります。
column-list
を指定しない場合は、ビューに定義されたフィールドが、すべての列の暗黙のリストに従って、指定したテーブルに存在する順序で挿入されます。
一般セットの構文:
VALUES |
[FOR-n-ROWS-clause] |
拡張セットの構文:
VALUES |
[FOR-n-ROWS-clause] | |||||||||||||
[WITH_CTE common-table-expression,...] select-expression |
WITH |
[QUERYNO integer]
|
構文の説明:
構文要素 | 説明 | |
---|---|---|
VIEW
view-name |
ビュー名:
このビューのフィールド値により、ビューのフィールド名を列名として使用して、新しい行が指定したテーブルに挿入されます。 |
|
insert-item-list |
INSERT 1 行:
値 例 - INSERT 1 行: ... INSERT INTO SQL-PERSONNEL (NAME,AGE) VALUES ('ADKINSON',35) ... |
|
FOR-n-ROWS-clause |
FOR n Rows 節:
オプションの節。下記の「FOR-n-ROWS-Clause」を参照してください。 |
|
WITH_CTE
common-table-expression |
WITH_CTE 節:
この節は SQL 拡張セットに含まれます。 このオプションの節では、後に続く 詳細については、「SELECT - SQL」の「WITH_CTE common-table-expression」を参照してください。 |
|
select-expression |
複数行の INSERT:
この節は SQL 拡張セットに含まれます。 select-expression では、multiple 行をテーブルに挿入します。select-expression が評価されると、結果テーブルの各行は、単一行の 詳細については、「選択式」を参照してください。 例 - 複数行の挿入: ... INSERT INTO SQL-RETIREE (NAME,AGE,SEX) SELECT LASTNAME, AGE, SEX FROM SQL-EMPLOYEES WHERE AGE > 60 ... 注意: |
|
WITH
RR/RS/CS |
WITH 分離レベル節:
この節は SQL 拡張セットに含まれます。 この節では、挿入する行を検索するときに使用する分離レベルを明示的に指定できます。DB2 データベースにのみ有効です。他のデータベースに使用すると、ランタイムエラーが発生します。 |
|
CS |
カーソルの安定 | |
RR |
繰り返し可能な読み込み | |
RS |
読み込みの安定 | |
QUERYNO_integer |
QUERYNO 節:
この節は SQL 拡張セットに含まれます。 この節は、現在はサポートされていないため無視されます。 |
FOR |
[:]_host-variable |
ROWS |
[atomic-clause] |
この節は次の副節で構成されます。
FOR |
[:]_host-variable |
ROWS |
この節の指定はオプションです。指定する必要があるのは、次の場合のみです。
コンパイラオプション DB2ARRY
が指定されている
複数の行が VALUES 節の insert-item-list で指定した配列から挿入される
指定する場合、[:]_hostvariable/integer では、VALUES 節の insert-item-list に指定した配列から DB2 テーブルに挿入する行の数を決定します(最初のオカレンスから挿入します)。
この節により、ループ内で Natural 配列から行を挿入するプログラムのパフォーマンスが向上します。この節を使用すると、配列内の行を 1 つの SQL ステートメントで挿入できます。
下記の例を参照してください。
この節では、複数の行の挿入を DB2 で原子処理として扱うかどうかを指定します。
指定する必要があるのは、次の場合のみです。
コンパイラオプション DB2ARRY
が指定されている
複数の行が VALUES 節の insert-item-list
で指定した配列から挿入される
構文の説明:
構文要素 | 説明 |
---|---|
ATOMIC |
エラーが発生した場合は、ターゲットテーブルに行を挿入しないことを指定します。
これはデフォルト値です。 |
NOT ATOMIC CONTINUE ON
SQLEXCEPTION |
エラーが発生した場合は、エラーのないすべての行を挿入し、エラーのある行を DB2 で破棄することを指定します。 |
このような場合に返される SQLCODE については、「DB2 SQL REFERENCE」を参照してください。
DEFINE DATA LOCAL 01 NAME (A20/1:10) INIT <'ZILLER1','ZILLER2','ZILLER3','ZILLER4' ,'ZILLER5','ZILLER6','ZILLER7','ZILLER8' ,'ZILLER9','ZILLERA'> 01 ADDRESS (A100/1:10) INIT <'ANGEL STREET 1','ANGEL STREET 2' ,'ANGEL STREET 3','ANGEL STREET 4' ,'ANGEL STREET 5','ANGEL STREET 6' ,'ANGEL STREET 7','ANGEL STREET 8' ,'ANGEL STREET 9','ANGEL STREET 10'> 01 DATENATD (D/1:10) INIT <D'1954-03-27',D'1954-03-27',D'1954-03-27' ,D'1954-03-27',D'1954-03-27',D'1954-03-27' ,D'1954-03-27',D'1954-03-27',D'1954-03-27' ,D'1954-03-27'> 01 SALARY (P4.2/1:10) INIT <1000,2000,3000,4000,5000 ,6000,7000,8000,9000,9999> 01 L§ADDRESS (I2/1:10) INIT <14,14,14,14,14,14,14,14,14,15> 01 N§ADDRESS (I2/1:10) INIT <00,00,00,00,00,00,00,00,00,00> 01 ROWS (I4) 01 INDEX (I4) 01 V1 VIEW OF NAT-DEMO_ID 02 NAME 02 ADDRESS (EM=X(20)) 02 DATEOFBIRTH 02 SALARY 01 ROWCOUNT (I4) END-DEFINE OPTIONS DB2ARRY=ON /* <-- ENABLE DB2 ARRAY ROWCOUNT := 10 INSERT INTO NAT-DEMO_ID (NAME,ADDRESS,DATEOFBIRTH,SALARY) VALUES (:NAME(*), /* <-- ARRAY :ADDRESS(*) /* <-- ARRAY INDICATOR :N§ADDRESS(*) /* <-- ARRAY LINDICATOR :L§ADDRESS(*), /* <-- ARRAY DB2 VCHAR :DATENATD(1:10), /* <-- ARRAY NATURAL DATES :SALARY(01:10) /* <-- ARRAY NATURAL PACKED ) FOR :ROWCOUNT ROWS SELECT * INTO VIEW V1 FROM NAT-DEMO_ID WHERE NAME > 'Z' DISPLAY V1 /* <-- VERIFY INSERT END-SELECT END