DELETE¶
Name
DELETE -- はテーブルの行を削除します
Synopsis
DELETE [ <optimizer_hint> ] FROM <table>[@<dblink> ]
[ WHERE <condition> ]
[ RETURNING <return_expression> [, ...]
{ INTO { <record> | <variable> [, ...] }
| BULK COLLECT INTO <collection> [, ...] } ]
Description
DELETE は、 WHERE 句を満たす行を指定されたテーブルから削除します。 WHERE 句がない場合、テーブル内のすべての行が削除されます。結果は有効ですが、空のテーブルです。
注釈
TRUNCATE コマンドは、テーブルからすべての行を削除するためのより高速なメカニズムを提供します。
RETURNING INTO { record | variable [, ...] } 節は、 DELETE コマンドがSPLプログラム内で使用される場合にのみ指定できます。さらに、 DELETE コマンドの結果セットに複数の行を含めることはできません。そうしないと、例外がスローされます。結果セットが空の場合、ターゲットレコードまたは変数の内容はnullに設定されます。
RETURNING BULK COLLECT INTO collection [, ...] 節は、 DELETE コマンドがSPLプログラム内で使用される場合にのみ指定できます。 BULK COLLECT INTO 節のターゲットとして複数の「10」が指定されている場合、各「10」は単一のスカラーフィールドで構成されている必要があります。つまり、「10」はレコードであってはなりません。 DELETE コマンドの結果セットには、0行、1行、または複数行が含まれる場合があります。結果セットの各行で評価された return_expression は、最初の要素から始まる「10」の要素になります。「10」の既存の行はすべて削除されます。結果セットが空の場合、「10」は空になります。
削除するテーブルの DELETE 特権と、条件で値が読み取られるテーブルの SELECT 特権が必要です。
Parameters
optimizer_hint
実行計画を選択するためのオプティマイザーへのコメントが埋め込まれたヒント。
table
既存のテーブルの名前(オプションでスキーマ修飾)。
dblink
リモートデータベースを識別するデータベースリンク名。データベースリンクの詳細については、
CREATE DATABASE LINKコマンドを参照してください。
condition
削除する行を決定する
BOOLEAN型の値を返す値式。
return_expression
tableの1つ以上の列を含む可能性のある式。return_expressionにtableの列名が指定されている場合、return_expressionが評価されるときに列に代入される値は、削除された行の値です。
record
評価された
return_expressionが割り当てられるフィールドを持つレコード。最初のreturn_expressionはrecordの最初のフィールドに割り当てられ、2番目のreturn_expressionはrecordの2番目のフィールドに割り当てられます。recordのフィールドの数は式の数と正確に一致する必要がありますフィールドは、割り当てられた式と型互換性がなければなりません。
variable
評価された
return_expressionが割り当てられる変数。return_expressionとvariableが複数指定されている場合、first return_expressionは最初のvariableに割り当てられ、2番目のreturn_expressionは2番目のvariableに割り当てられます。INTOキーワードはRETURNINGキーワードに続く式の数と正確に一致する必要があり、変数は割り当てられた式と型互換性がなければなりません。
collection
評価された
return_expressionから要素が作成されるコレクション。単一フィールドのコレクションまたはレコードタイプのコレクションである単一コレクション、または複数のコレクションがあり、各コレクションが単一フィールドで構成されている必要があります。戻り式の数は数が一致し、指定されたすべてのコレクション内のフィールドの数を並べる必要があります。対応する各return_expressionおよびcollectionフィールドは、タイプ互換である必要があります。
Examples
jobhist テーブルから従業員 7900 のすべての行を削除します。
DELETE FROM jobhist WHERE empno = 7900;
テーブル jobhist をクリアします。
DELETE FROM jobhist;
See Also
TRUNCATE