INSERT

INSERT文は、表に行を追加します。

次の式は、INSERT文のVALUES句の中で使用できます。

必要な権限

表の所有者に必要な権限はありません。

別のユーザーの表の場合、INSERTが必要です。

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

INSERT [hint] INTO [Owner.]TableName [(Column [,...])]
VALUES (SingleRowValues)
[RETURNING|RETURN Expression[,...] INTO DataItem[,...]]

SingleRowValuesパラメータの構文は、次のとおりです。

{NULL|{?|:DynamicParameter}|{Constant}| DEFAULT}[,...]

パラメータ

パラメータ 説明

hint

INSERT文に文レベルのオプティマイザ・ヒントを指定します。文レベルのオプティマイザ・ヒントの詳細は、「文レベルのオプティマイザ・ヒント」を参照してください。

Owner

データを挿入する表の所有者。

TableName

データを挿入する表の名前。

Column

このリストの各列には、SingleRowValuesから値が割り当てられます。

1つ以上の表の列をこのリストで省略した場合、挿入された行では、省略された列の値は、表の作成時または最終更新時に指定された列のデフォルト値になります。省略した列にNOT NULL制約が指定されており、その列にデフォルト値が定義されていない場合は、データベースによってエラーが返されます。

列のリストを完全に省略した場合は、表のすべての列に値を指定する必要があります。

?

:DynamicParameter

準備されたSQL文の動的パラメータのプレースホルダ。動的パラメータの値は、文の実行時に設定されます。

Constant

特定の値。定数の詳細は、「定数」を参照してください。

DEFAULT

列をデフォルト値で更新する必要があることを指定します。

Expression

有効な式の構文。式の詳細は、「式」を参照してください。

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