テーブルに行を追加します。
構文
INSERT INTOテーブル [サブクエリ][@ dblink ] [ ( column [, ...] ) ]
{VALUES ( { expression | DEFAULT } [, ...] )
[ RETURNING return_expression [, ...]
{INTO { record | variable [, ...] }
| BULK COLLECT INTO collection [, ...] } ]
| query }
説明
INSERT
ステートメントを実行して、新しい行をテーブルに挿入できます。 一度に1つの行を挿入することも、クエリの結果として複数の行を挿入することもできます。
リスト内の列を希望する順序でリストすることができます。 リストにない各列には、宣言されたデフォルト値またはnullのいずれかのデフォルト値が挿入されます。
列の式で正しいデータ型が使用されていない場合、自動型変換が試行されます。
INSERT
ステートメントがSPLプログラム内で実行され、VALUES
句が使用されている場合にのみ、RETURNINGINTO { record | variable [, ...] }
句を指定できます。
INSERT
ステートメントがSPLプログラム内で実行された場合にのみ、RETURNING BULK COLLECT INTO collection [, ...]
句を指定できます。 BULK COLLECT INTO
句のオブジェクトとして複数のcollection
を指定する場合、各collection
は単一のスカラーフィールドで構成されている必要があります。 各コレクション
をレコードにすることはできません。 挿入された行ごとに、評価値return_expression
は、最初の要素から始まるcollection
内の要素です。 collection
内の既存の行が削除されます。 結果セットが空の場合、collection
も空になります。
テーブルに挿入できるように、テーブルに対するINSERT
権限が必要です。 query
句を使用してクエリから行を挿入する場合は、クエリで使用されるテーブルに対するSELECT
権限も必要です。
パラメーター
パラメーター | 説明 |
table | 既存のテーブルの名前。 名前はスキーマで修飾できます。 |
dblink | リモートデータベースを識別するデータベースリンク名。 データベースリンクの詳細については、「CREATE database LINK 」ステートメントをご参照ください。 |
column | table 内の列の名前。 |
expression | column に割り当てる式または値。 |
DEFAULT | 列のデフォルト値。 |
query | 挿入する行を提供するクエリ (SELECT ステートメント) 。 詳細については、「SELECT 」をご参照ください。 |
return_expression | table に1つ以上の列を含めることができる式。 table の列名がreturn_expression に指定されている場合、return_expression が評価されるときに列に代入される値は次のように決定されます。
|
record | フィールドにreturn_expression の評価結果を割り当てるレコード。 たとえば、最初のreturn_expression はrecord の最初のフィールドに割り当てられ、2番目のreturn_expression はrecord の2番目のフィールドに割り当てられます。 レコード内のフィールドの数は式の数と一致する必要があり、フィールドは対応する式とタイプ互換である必要があります。 |
variable | return_expression の評価結果を代入する変数です。 複数のreturn_expression とvariable を指定した場合、最初のreturn_expression は最初のvariable に割り当てられ、2番目のreturn_expression は2番目のvariable に割り当てられます。 INTO キーワードに続く指定された変数の数は、RETURNING キーワードに続く式の数と一致する必要があり、変数は対応する式と型互換である必要があります。 |
collection | 評価されたreturn_expression から要素が作成されるコレクション。 単一フィールドのコレクションまたはレコードタイプのコレクションを指定できます。 各コレクションが単一フィールドで構成される複数のコレクションを指定することもできます。 戻り式の数は、指定したすべてのコレクションのフィールド数と一致し、順序付けする必要があります。 各return_expression は、対応するcollection フィールドと型互換である必要があります。 |
subquery | このパラメーターは、サブクエリ句を指定します。 |
例
emp
テーブルに1行を挿入する:
INSERT INTO emp VALUES (8021、'JOHN '、'SALESMAN' 、7698、'22-FEB-07' 、1250,500、30);
この2番目の例では、comm
という名前の列は省略されます。 したがって、デフォルト値は null です。
INSERT INTO emp (empno、ename、job、mgr、hiredate、sal、deptno)
値 (8022、「ピーター」、「CLERK」、7698、「03-DEC-06」、950,30);
3番目の例では、値を指定するのではなく、hiredate
列とcomm
列にDEFAULT
句を使用します。
INSERT INTO emp VALUES (8023、'FORD' 、'ANALYST' 、7566、NULL、3000、NULL、20);
この例では、部門名のテーブルを作成してから、テーブルに挿入します。 部門名は、dept
テーブルのdname
列から取得します。
テーブルの作成deptnames (
deptname VARCHAR2 (14)
);
INSERT INTO deptnames SELECT dname FROM dept;
select * from table1
の結果をオブジェクトとして使用し、(1,1,1) の行をオブジェクトに挿入します。
INSERT INTO (SELECT * FROM table1) 値 (1、'1' 、1) ;