次の式は、INSERT文のVALUES句の中で使用できます。
順序
NEXTVALおよび順序
CURRVAL
DEFAULT
必要な権限
表の所有者に必要な権限はありません。
別のユーザーの表の場合、INSERTが必要です。
SQL構文
INSERT INTO [Owner.]TableName [(Column [,...])] VALUES (SingleRowValues) [RETURNING|RETURN Expression[,...] INTO DataItem[,...]]
SingleRowValues
パラメータの構文は、次のとおりです。
{NULL|{?|:DynamicParameter}|{Constant}| DEFAULT}[,...]
パラメータ
パラメータ | 説明 |
---|---|
Owner |
データを挿入する表の所有者。 |
TableName |
データを挿入する表の名前。 |
Column |
このリストの各列には、SingleRowValues から値が割り当てられます。
1つ以上の表の列をこのリストで省略した場合、挿入された行では、省略された列の値は、表の作成時または最終更新時に指定された列のデフォルト値になります。 省略した列にNOT NULL制約が指定されており、その列にデフォルト値が定義されていない場合は、データベースによってエラーが返されます。 列のリストを完全に省略した場合は、表のすべての列に値を指定する必要があります。 |
?
|
準備されたSQL文の動的パラメータのプレースホルダ。動的パラメータの値は、文の実行時に設定されます。 |
Constant |
特定の値。「定数」を参照してください。 |
DEFAULT |
列をデフォルト値で更新する必要があることを指定します。 |
Expression |
有効な式の構文。第3章「式」を参照してください。 |
DataItem |
取得したExpression 値を格納するホスト変数またはPL/SQL変数。 |
説明
表の列を列名リストで省略した場合は、INSERT文によって、省略された列にデフォルト値が割り当てられます。 省略した列に表定義でNOT NULLが指定されている場合、その列にデフォルト値が定義されていなければ、INSERT文は失敗します。
BINARYおよびVARBINARYデータは、文字形式または16進形式に挿入できます。
文字形式では、一重引用符が必要です。
16進形式では、値の前に`0x'
を指定する必要があります。
外部キー制約に違反するINSERT処理はエラーになります。外部キー制約の詳細は、「CREATE TABLE」を参照してください。
RETURNING句の制限:
各Expression
は単純な式である必要があります。集計関数はサポートされません。
順序番号はOUTパラメータに戻せません。
ROWNUMおよび副問合せは、RETURNING句では使用できません。
RETURNING句内のパラメータは、INSERT文で重複して使用できません。
PL/SQLでは、RETURNING句はWHERE CURRENT処理と一緒には使用できません。
例
purchasing.vendors
表に新しい単一行を追加します。
INSERT INTO purchasing.vendors VALUES (9016, 'Secure Systems, Inc.', 'Jane Secret', '454-255-2087', '1111 Encryption Way', 'Hush', 'MD', '00007', 'discount rates are secret');
:pno
と:pname
は動的パラメータであり、その値は実行時に設定されます。
INSERT INTO purchasing.parts (partnumber, partname) VALUES (:pno, :pname);
新しい従業員の年間のsalary
およびjob_id
を返します。 変数sal
およびjobid
を、salary
およびjob_id
と同じデータ型で宣言します。 employees
に行を挿入します。 確認用に変数を出力します。
Command> VARIABLE sal12 NUMBER(8,2); Command> VARIABLE jobid VARCHAR2(10) INLINE NOT NULL; Command> INSERT INTO employees(employee_id, last_name, email, hire_date, > job_id, salary) > VALUES (211,'Doe','JDOE',sysdate,'ST_CLERK',2400) > RETURNING salary*12, job_id INTO :sal12,:jobid; 1 row inserted. PRINT sal12 jobid; SAL12 : 28800 JOBID : ST_CLERK
関連項目