UPDATE
文は、表またはビューの1つ以上の行の指定された列の値を変更します。 UPDATE
SQLステートメントの詳細については、 『Oracle Database SQLリファレンス』を参照してください。
構文
更新ステートメント:: =
図の説明update_statement.gif
キーワードとパラメーターの説明
エイリアス
参照されるテーブルまたはビューの別の(通常は短い)名前。通常はWHERE
句で使用されます。
column_name
更新する列(または列の1つ)。参照されるテーブルまたはビューの列の名前である必要があります。 column_name
リストで列名を繰り返すことはできません。列名は、テーブルまたはビューに表示されるのと同じ順序でUPDATE
ステートメントに表示される必要はありません。
returning_clause
値を返します更新された行から、後で行をSELECT
する必要がなくなります。列の値は、変数またはホスト変数、あるいはコレクションまたはホスト配列に取得できます。 RETURNING
句をリモートまたは並列更新に使用することはできません。ステートメントがどの行にも影響を与えない場合、RETURNING
句で指定された変数の値は未定義です。 returning_clause
の構文については、「RETURNINGINTO句」を参照してください。
SET column_name = sql_expression
この句は、
をcolumn_name
で識別される列に移動します。 sql_expression
に更新中のテーブルの列への参照が含まれている場合、参照は現在の行のコンテキストで解決されます。古い列の値は等号の右側で使用されます。
SET column_name =(subquery3)
データベースから取得した値ををcolumn_name
で識別される列に移動します。サブクエリは、正確に1つの行と1つの列を返す必要があります。
SET(column_name、column_name、…)=(subquery4)
データベースから取得した値を
をcolumn_name
リストの列に追加します。サブクエリは、リストされているすべての列を含む正確に1つの行を返す必要があります。サブクエリによって返される列の値は、列リストの列に順番に割り当てられます。最初の値はリストの最初の列に割り当てられ、2番目の値はリストの2番目の列に割り当てられます。
sql_expression
任意の有効なSQL式。詳細は、 『Oracle Database SQLリファレンス』を参照してください。
subquery
SELECT
ステートメント。処理する行のセットを提供します。その構文は、INTO
句のないselect_into_statement
の構文に似ています。 「SELECTINTOステートメント」を参照してください。
table_reference
UPDATE
ステートメントを実行するときにアクセスできる必要があるテーブルまたはビュー。 UPDATE
権限が必要です。 table_reference
の構文については、「DELETEステートメント」を参照してください。
TABLE(subquery2)
はSELECT
ステートメントであり、単一の列値を返します。これはネストされたテーブルまたはVARRAYである必要があります。演算子TABLE
は、値がスカラー値ではなくコレクションであることをOracleに通知します。
cursor_nameの現在の場所
最新の行を参照します指定されたカーソルに関連付けられたFETCH
ステートメントによって処理されます。カーソルはFOR
UPDATE
である必要があり、開いて行に配置されている必要があります。カーソルが開いていない場合、CURRENT
OF
句によってエラーが発生します。カーソルが開いているが、行がフェッチされていないか、最後のフェッチで行が返されない場合、PL / SQLは事前定義された例外NO_DATA_FOUND
を発生させます。
WHERE search_condition
データベース表で更新する行を選択します。検索条件を満たす行のみが更新されます。この句を省略すると、テーブル内のすべての行が更新されます。
使用上の注意
UPDATE
WHERE
CURRENT
OF
ステートメント(カーソル
ループ)、関連付けられたクエリがFOR
UPDATE
の場合。このステートメントは、フェッチされたばかりの行を更新します。
暗黙カーソルSQL
とカーソル属性%NOTFOUND
、%FOUND
、%ROWCOUNT
、および%ISOPEN
を使用すると、UPDATE
の実行に関する有用な情報にアクセスできます。ステートメント。
例
例13-7は、正しい従業員IDと文字化けした名前のテーブルを作成します。次に、相関クエリを使用してUPDATE
ステートメントを実行し、EMPLOYEES
テーブルから正しい名前を取得して、新しいテーブルの名前を修正します。 。
例については、以下を参照してください。
例1-12「格納されたサブプログラムの作成」
例4-1「単純なIF-THENステートメントの使用」
例5-51「レコードを使用した行の更新」
例5-52「レコードでのRETURNING句の使用」
例6-1「PL / SQLを使用したデータ操作」
例6-5「CURRVALとNEXTVALの使用」
例6-6「ROWNUMの使用」
例6-38「SAVEPOINTとROLLBACKの使用」
例6-41「CURRENTの使用」 OFを使用して、カーソルからフェッチされた最新の行を更新します」
例7-1、「動的SQLの例」
例7-5「RETURNINGBULK COLLECTINTO句を使用した動的SQL」
例7-6 、「FORALLステートメント内の動的SQL」
例11-6、「FORALLでのロールバックの使用」
例11-9、「例外にもかかわらず継続する一括操作」
関連トピック
“データ操作”
“DELETEステートメント”
“FETCHステートメント”
“INSERTステートメント”