プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

UPDATE (実行可能埋込みSQL)

用途

表またはビューの実表の既存の値を変更します。

前提条件

表またはスナップショットの値を更新するには、表がユーザーのスキーマ内にあるか、または表に対してUPDATEの権限を持っている必要があります。

ビューの実表の値を更新するには、ビューが属するスキーマの所有者が、実表に対してUPDATEの権限を持っている必要があります。また、ビューがユーザーのスキーマ以外のスキーマ内にある場合は、ビューに対してUPDATEの権限を持っている必要があります。

UPDATE ANY TABLEのシステム権限により、すべての表またはビューの実表の値も更新できます。

構文

キーワードおよびパラメータ

キーワードおよびパラメータ 説明

AT

UPDATE文の発行先のデータベースを識別します。次のいずれかを使用してデータベースを指定します。

dbname: DECLARE DATABASE文を使用して事前に宣言したデータベース識別子。

host_variable: 事前に宣言したdb_nameの値を持つホスト変数。

この句を省略した場合、UPDATE文はデフォルトのデータベースに対して発行されます。

FOR :host_integer

integer

SET句およびWHERE句が配列ホスト変数を含む場合に、UPDATE文を実行する回数を制限します。この句を省略した場合、Oracleは最小の配列の各コンポーネントにつき1回ずつ文が実行されます。

schema

表またはビューを含むスキーマ。schemaを省略した場合、Oracleでは表またはビューが自分のスキーマ内にあるとみなされます。

table, view

更新する表の名前。ビューを指定すると、Oracleではそのビューの実表が更新されます。

dblink

表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。データベース・リンクの参照の詳細は、Oracle Database SQL言語リファレンスを参照してください。データベース・リンクを使用してリモートの表またはビューを更新できるのは、Oracleで分散オプションを使用している場合のみです。

part_name

表のパーティションの名前。

column

表またはビューで更新する列の名前。SET句から表の列を削除する場合、その列の値は変更されません。

expr

対応する列に割り当てる新しい値。この式には、ホスト変数およびオプションの標識変数を含めることができます。Oracle Database SQL言語リファレンスのexprの構文を参照してください。

subquery_1

対応する列に割り当てられた新しい値を戻す副問合せ。副問合せの構文は、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。

subquery_2

対応する列に割り当てられた新しい値を戻す副問合せ。副問合せの構文は、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。

WHERE

更新される表またはビューの行を指定します。

condition

CURRENT OF

この条件がTRUEの行のみを更新します。この条件には、ホスト変数およびオプションのインジケータ変数を含めることができます。条件の構文は、『Oracle Database SQL言語リファレンス』を参照してください。

カーソルによって最後にフェッチされた行のみを更新します。結合を実行するSELECT文にカーソルを対応付けるには、FOR UPDATE句で明示的に1つの表のみをロックするほかに方法はありません。

この句を完全に省略した場合、表またはビューのすべての行が更新されます。

DML RETURNING句

DML RETURNING句を参照してください。

使用上の注意

SET句およびWHERE句に含まれるホスト変数は、すべてスカラーか、またはすべて配列であることが必要です。変数がスカラーの場合、OracleはUPDATE文を1回のみ実行します。変数が配列の場合、Oracleは配列のコンポーネント・セットごとに1回ずつこの文を実行します。1回の実行で、0行または1行、複数行を更新できます。

配列ホスト変数は、サイズが異なってもかまいません。この場合、Oracleが文を実行する回数は、次のうちの小さい方の値によって決定します。

  • 最小の配列のサイズ

  • オプションのFOR句の:host_integerの値

更新された行の累積数は、SQLCAのSQLERRDコンポーネントの第3要素に設定されて戻されます。入力ホスト変数として配列を使用した場合、この数値はUPDATE文で処理された配列のすべてのコンポーネントにおよぶ更新数の合計を示します。この条件を満たす行が存在しない場合、行は更新されず、OracleはSQLCAのSQLCODE要素を通じてエラー・メッセージを戻します。WHERE句を省略した場合は、すべての行が更新され、OracleはSQLCAのSQLWARN要素の第5コンポーネントに警告フラグを設定します。

UPDATE文においてコメントを使用して、指示やヒントをオプティマイザに渡すことができます。オプティマイザは、これらのヒントを使用して文の実行計画を選択します。ヒントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この文の詳細は、埋込みSQLおよびデータベースの概要を参照してください。

次の例では、埋込みSQLのUPDATE文の使用方法を示します。

EXEC SQL UPDATE emp 
    SET sal = :sal, comm = :comm INDICATOR :comm_ind 
    WHERE ename = :ename; 
 
EXEC SQL UPDATE emp 
    SET (sal, comm) = 
        (SELECT AVG(sal)*1.1, AVG(comm)*1.1 
         FROM emp) 
    WHERE ename = 'JONES'; 

関連項目