次の式は、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
関連項目