表またはスナップショットの値を更新するには、表が自分のスキーマにあるか、または表に対するUPDATE
権限が必要です。
ビューの実表の値を更新するには、ビューが属するスキーマの所有者に、実表に対するUPDATE
権限が必要です。また、ビューが自分以外のスキーマにある場合は、そのビューに対するUPDATE
権限が必要です。
UPDATE ANY TABLE
システム権限があれば、どの表またはビューの実表でも値を更新できます。
OracleをDBMS MAC
モードで使用している場合は、DBMSラベルが表またはビューの作成ラベルと一致する必要があります。
表またはビューの作成ラベルがDBMSラベルより上位にある場合は、READUP
およびWRITEUP
システム権限が必要です。
表またはビューの作成ラベルがDBMSラベルより下位にある場合は、WRITEDOWN
システム権限が必要です。
表またはビューの作成ラベルがDBMSラベルと同等でない場合は、READUP
、WRITEUP
およびWRITEDOWN
システム権限が必要です。
AT
UPDATE
文の発行先のデータベースを指定します。次のいずれかを使用してデータベースを指定します。
db_nameは、DECLARE
DATABASE
文で事前に宣言したデータベース識別子。
:host_variableは、値が事前に宣言したdb_nameであるホスト変数。
この句を省略した場合、UPDATE
文はデフォルトのデータベースに対して発行されます。
FOR
:host_integer
SET
句およびWHERE
句に配列ホスト変数が含まれる場合に、UPDATE
文を実行する回数を制限します。この句を省略した場合、Oracleは最小の配列の各コンポーネントにつき1回ずつ文が実行されます。
schema
表またはビューを含むスキーマ。schemaを省略した場合、Oracleは表またはビューがユーザーのスキーマ内にあるとみなします。
table view
更新する表の名前。viewを指定する場合、Oracleではビューのベース表を更新します。
dblink
表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。Oracleを分散オプションで使用している場合にのみ、リモートの表またはビューを更新するためにデータベース・リンクを使用できます。
alias
文の他の場所にある表、ビューまたは副問合せを参照するために使用する名前。
column
表またはビューで更新する列の名前。SET
句から表の列を省略すると、その列値は変更されないままです。
expr
対応する列に割り当てられた新しい値。この式には、ホスト変数およびオプションのインディケータ変数を含めることができます。
subquery_1
対応する列に割り当てられた新しい値を戻す副問合せ。
subquery_2
対応する列に割り当てられた新しい値を戻す副問合せ。
WHERE
表またはビューで更新する行を指定します。
conditionは、条件を満たす行のみを更新します。この条件には、ホスト変数およびオプションのインジケータ変数を含めることができます。
CURRENT OF
は、cursorによって最後にフェッチされた行のみを更新します。cursorは、FOR
UPDATE
句により明示的に1つの表のみがロックされていないかぎり、結合を実行するSELECT
文に関連付けることはできません。
この句を完全に省略した場合、Oracleは表またはビューのすべての行を更新します。
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オプティマイザに渡すことができます。オプティマイザでは、このヒントを使用して文の実行計画が選択されます。
このコマンドの詳細は、埋込み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';