表に行を挿入するには、表が自分のスキーマにあるか、または表に対するINSERT
権限が必要です。
ビューの実表に行を挿入するには、ビューが属するスキーマの所有者に、実表に対するINSERT
権限が必要です。また、ビューが自分以外のスキーマにある場合は、そのビューに対するINSERT
権限が必要です。
INSERT ANY TABLE
システム権限があれば、どの表またはビューの実表にも行を挿入できます。
OracleをDBMS MAC
モードで使用している場合は、DBMSラベルが表またはビューの作成ラベルと一致する必要があります。
表またはビューの作成ラベルがDBMSラベルより上位にある場合は、WRITEUP
システム権限が必要です。
表またはビューの作成ラベルがDBMSラベルより下位にある場合は、WRITEDOWN
システム権限が必要です。
表またはビューの作成ラベルがDBMSラベルと同等でない場合は、WRITEUP
およびWRITEDOWN
システム権限が必要です。
AT
INSERT
文を実行するデータベースを指定します。次のいずれかを使用してデータベースを指定します。
db_nameは、DECLARE
DATABASE
文で事前に宣言したデータベース識別子。
:host_variableは、値が事前に宣言したdb_nameであるホスト変数。
この句を省略した場合、INSERT
文はデフォルトのデータベースで実行されます。
FOR
:host_integer
VALUES
句に配列ホスト変数が含まれる場合に、文を実行する回数を制限します。この句を省略した場合、Oracleは最小の配列の各コンポーネントにつき1回ずつ文が実行されます。
schema
表またはビューを含むスキーマ。schemaを省略した場合、Oracleは表またはビューがユーザーのスキーマ内にあるとみなします。
table view
行を挿入する表の名前。viewを指定する場合、Oracleはビューの実表に行を挿入します。
dblink
表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。Oracleを分散オプションで使用している場合にのみ、リモートの表またはビューに行を挿入できます。
dblinkを省略した場合、Oracleでは表またはビューがローカル・データベースにあるとみなされます。
column
表またはビューの列。挿入した行では、このリストの各列にVALUES
句または問合せから値が割り当てられます。
このリストから表の列を削除する場合、挿入された行の列値は、表の作成時に指定した列のデフォルト値となります。列のリストを完全に省略した場合は、VALUES
句または問合せで表のすべての列に値を指定する必要があります。
VALUES
表またはビューに挿入する値の表を指定します。ホスト変数には、オプションのインディケータ変数と合せて式も使用できます。VALUES
句では、列リストの列ごとに式を指定する必要があります。
副問合せ
表に挿入される行を戻す副問合せ。この副問合せの選択リストの列数は、INSERT
文の列リストの列数と同じであることが必要です。
WHERE
句のホスト変数は、すべてがスカラーか、あるいはすべてが配列であることが必要です。変数がスカラーの場合、OracleではINSERT
文が1回しか実行されません。変数が配列の場合は、配列のコンポーネントのセットごとにINSERT
文が1回実行され、1行ずつ挿入されます。
WHERE
句の配列ホスト変数は、サイズが異なっていてもかまいません。この場合、Oracleが文を実行する回数は、次のうちの小さい方の値によって決定します。
最小の配列のサイズ
オプションのFOR句の:host_integerの値。
このコマンドの詳細は、埋込みSQLの使用方法を参照してください。
この例では、埋込みSQL INSERT
コマンドの使用方法を示しています。
EXEC SQL INSERT INTO emp (ename, empno, sal) VALUES (:ename, :empno, :sal);
この例では、副問合せを使用した埋込みSQL INSERT
コマンドを示しています。
EXEC SQL INSERT INTO new_emp (ename, empno, sal) SELECT ename, empno, sal FROM emp WHERE deptno = :deptno;