用途
表またはビューの実表に行を追加します。
前提条件
表に行を挿入するには、その表が自分のスキーマ内にあるか、またはその表に対してINSERTの権限を持っている必要があります。
ビューの実表に行を挿入するには、ビューが属するスキーマの所有者が、その実表に対してINSERTの権限を持っている必要があります。また、ビューがユーザーのスキーマ以外のスキーマ内にある場合は、ビューに対してINSERTの権限を持っている必要があります。
INSERT ANY TABLEシステム権限を使用すると、どの表またはビューの実表にも行を挿入できます。
構文
DML RETURNING句は次のとおりです。
キーワードおよびパラメータ
キーワードおよびパラメータ | 説明 |
---|---|
AT |
INSERT文をどのデータベースについて実行するかを指定します。次のいずれかを使用してデータベースを指定します。 db_name: DECLARE DATABASE文を使用して事前に宣言したデータベース識別子。 host_variable: 値がdb_nameのホスト変数。この句を省略した場合、INSERT文はデフォルトのデータベースに対して実行されます。 |
FOR :host_integer integer |
VALUES句に配列ホスト変数が含まれる場合に、文を実行する回数を制限します。 この句を省略した場合、Oracleは最小の配列の各コンポーネントにつき1回ずつ文が実行されます。 |
schema |
表またはビューを含むスキーマ。schemaを省略した場合、Oracleでは表またはビューが自分のスキーマ内にあるとみなされます。 |
table view |
行を挿入する表の名前。 ビューを指定すると、Oracleではそのビューの実表に行が挿入されます。 |
db_link |
表またはビューがあるリモート・データベースへのデータベース・リンクの完全名または部分名。データベース・リンクの参照の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 Oracleを分散オプションで使用している場合にのみ、リモートの表またはビューに行を挿入できます。
|
part_name |
表のパーティションの名前。 |
column |
このリストから表の列を削除する場合、挿入された行の列値は、表の作成時に指定した列のデフォルト値となります。列のリストを完全に省略した場合は、VALUES句または問合せによって、表のすべての列の値を指定する必要があります。 |
VALUES |
表またはビューに挿入される値の行を指定します。構文については、『Oracle Database SQL言語リファレンス』を参照してください。式には、ホスト変数とオプションの標識変数を使用できます。VALUES句では、列のリストの各列に式を指定する必要があります。 |
subquery |
表に挿入される行を戻す副問合せ。この副問合せの選択リストの列数は、INSERT文の列のリストの列数と同じであることが必要です。副問合せの構文については、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。 |
DML RETURNING句 |
DML RETURNING句を参照してください。 |
使用上の注意
WHERE句内のホスト変数は、すべてスカラーか、すべて配列である必要があります。変数がスカラーの場合、OracleはINSERT文を1回実行します。変数が配列の場合、OracleはINSERT文を各配列コンポーネント・セットについて1回ずつ実行して、1行ずつ挿入します。
WHERE句の配列ホスト変数は、サイズが異なっていてもかまいません。この場合、Oracleが文を実行する回数は、次のうちの小さい方の値によって決定します。
最小の配列のサイズ
オプションのFOR句の:host_integerの値。
この文の詳細は、INSERT文を参照してください。
例1
この例では、埋込みSQL INSERT文の使用方法を示しています。
EXEC SQL INSERT INTO emp (ename, empno, sal) VALUES (:ename, :empno, :sal) ;
例2
この例では、副問合せを使用した埋込みSQLのINSERT文を示します。
EXEC SQL INSERT INTO new_emp (ename, empno, sal) SELECT ename, empno, sal FROM emp WHERE deptno = :deptno ;
関連項目