- 表識別子
更新する表を指定します。
規則を次に示します。
- 読み込み専用のビュー表は行の更新ができません。読み込み専用のビュー表については,「3. CREATE 〔PUBLIC 〕VIEW(ビュー定義,パブリックビュー定義)」の共通規則を参照してください。
- ビュー表の列の更新を指定した場合は,そのビュー表の列に対応する基の実表を更新します。
- 表名の有効範囲はUPDATE文全体です。
- SET句,又はADD句に指定した副問合せ中に,更新する表の列を外への参照で指定し,かつ副問合せの選択式に次に示す属性の値式を指定した場合,副問合せのFROM句の表名と同じ名称は指定できません。
- BLOB
- 最大長が32,001バイト以上のBINARY
- 繰返し列
- 抽象データ型
ただし,副問合せのFROM句の表名にビュー表を指定した場合は,そのビュー表定義の導出問合せ式中で指定したすべての表名が対象になります。
- RDノード名称
- アクセスをするRDノードのRDノード名称を指定します。
- 認可識別子
- 表の所有者の認可識別子を指定します。認可識別子に"MASTER"は指定できません。
- 表識別子
- 更新する表の名称を指定します。
- IN
- アクセス対象のRDエリアを指定します。表識別子に指定した表が外部表の場合は指定できません。
- RDエリア名指定::=値指定
- 表識別子に指定した表を格納しているRDエリアのうち,アクセスするRDエリアの名称をVARCHAR型,CHAR型,MVARCHAR型,又はMCHAR型の値指定で指定します。複数のRDエリア名を指定する場合はコンマ(,)で区切って指定してください。RDエリア名は重複して指定できません。重複して指定した場合はエラーとなります。値指定で指定するRDエリア名に許される文字については,「1.1.7 名前の指定」を参照してください。また,値指定で指定したRDエリア名の前後の空白は無視されます。RDエリア名を引用符(")で囲んだ場合は,引用符(")の外側の空白だけを無視します。
- カーソル名又は拡張カーソル名の指定がある場合は,カーソル宣言で宣言したカーソルで指定したRDエリアと同じRDエリアの集合を指定してください(順不同)。指定しない場合はエラーとなります。
- インナレプリカ機能を適用しているRDエリアを指定する場合,オリジナルRDエリア名を指定してください。レプリカRDエリアを対象とする場合は,カレント切り替えコマンド(pddbchgコマンド),又はクライアント環境定義のPDDBACCSオペランドでアクセス対象RDエリアをレプリカRDエリアに切り替えてください。
更新対象の表に対して相関名を使用する場合に指定します。
相関名の有効範囲はUPDATE文全体です。更新対象の表識別子は有効範囲を持ちません。
使用インデクスのSQL最適化指定については,「2.24 SQL最適化指定」を参照してください。
列の値,又は抽象データ型の属性の値を更新する場合に指定します。
- 列名
- 更新する列の名称を指定します。
- コンポネント指定
- 更新する抽象データ型の属性を指定します。
- 列名 [{添字|*}]
- 列名
- 要素を更新する繰返し列を指定します。
- [{添字|*}]
- 添字には,更新する要素の位置を指定します。*は,要素の最後を更新する場合に指定します。
- *を指定した場合,更新対象となっている繰返し列の要素が0のときは,*の指定は無効となります。
- 更新値
- 更新値の列の値として次に示す項目が指定できます。
- 列名
- コンポネント指定
- 定数
- 値式(四則演算,連結演算を含みます)
- スカラ副問合せ
- USER
- CURRENT_DATE
- CURRENT_TIME
- CURRENT_TIMESTAMP〔(p)〕
- NULL(ナル値を表します)
- DEFAULT(更新対象の列の既定値を表します)
- :埋込み変数〔:標識変数〕
- ?パラメタ
- SQL変数,又はSQLパラメタ
- ARRAY [要素の値〔,要素の値〕…]※
- 注※
- 要素の値には,次の項目を指定できます。
- 繰返し列以外の列名
- 添字付き繰返し列
- 定数
- 値式(四則演算,連結演算を含みます)
- スカラ副問合せ
- USER
- CURRENT_DATE
- CURRENT_TIME
- CURRENT_TIMESTAMP〔(p)〕
- NULL(ナル値を表します)
- DEFAULT
- :埋込み変数〔:標識変数〕
- ?パラメタ
- SQL変数,又はSQLパラメタ
- 更新値の規則
- 更新値として列名を指定する場合は,更新対象になる列,又は属性と同じデータ型,又は変換できるデータ型の列名を指定します。
- 更新値としてスカラ副問合せを指定する場合,スカラ副問合せで得られる列のデータ型は,更新対象の列又は属性と同じデータ型,又は変換できるデータ型にしてください。
- 更新対象のデータ型が文字データ型の場合,更新対象と更新値の文字集合は同じにしてください。ただし,更新値として埋込み変数(既定文字集合),?パラメタ,又は文字列定数を指定した場合は,自動的に更新対象の文字集合に変換します。
- 更新対象に添字のない繰返し列を指定する場合,更新値の列名,又はスカラ副問合せの選択式には,添字のない繰返し列の列名を指定してください。
- 更新対象に添字のある繰返し列を指定する場合,更新値の列名,又はスカラ副問合せの選択式に添字のない繰返し列の列名は指定できません。
- 埋込み変数,標識変数は,PREPARE文で前処理するUPDATE文,又は手続き中には指定できません。手続き中では,SQL変数,又はSQLパラメタを使用します。
- 埋込み変数(標識変数),?パラメタ,SQL変数,又はSQLパラメタを指定する場合,埋込み変数(?パラメタの場合は,それに値を与えるために指定する埋込み変数),SQL変数,又はSQLパラメタのデータ型は,更新する列又は属性のデータ型,又は変換できるデータ型にしてください。
また,更新対象となる列が繰返し列の場合,更新値の埋込み変数(標識変数),?パラメタは繰返し構造にしてください。
- 標識変数を指定した場合は,標識変数の値が負の場合,埋込み変数の値がナル値と解釈され,対応する列にナル値が設定されます。標識変数の値が0,又は正の場合,埋込み変数の値が対応する列に設定されます。
- ?パラメタは,PREPARE文で前処理をするUPDATE文の場合だけ指定できます。
?パラメタに与える値は,前処理をしたPREPARE文に対応するEXECUTE文のUSING句の埋込み変数で指定します。
- 更新値は,更新対象になる列又は属性と変換,比較できるデータ型にしてください。
ただし,更新対象になる列又は属性が各国文字データ型で,更新値として文字列定数を指定した場合,文字列定数を各国文字列定数とみなします。文字列定数を各国文字列定数とみなした場合,文字コードはチェックされないで,文字データの長さだけがチェックされます。
- 更新する列が添字のない繰返し列の場合,更新値には,定数,値式,USER,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP〔(p)〕,SQL変数,又はSQLパラメタは指定できません。
- ARRAY [要素の値〔,要素の値〕…]は,更新対象になる列が繰返し列の場合にだけ指定できます。
- ARRAY [要素の値〔,要素の値〕…]の中の要素の値は,最大30,000個指定できます。ただし,更新する列の最大要素数以下にしてください。
- 更新値としてDEFAULTを指定する場合の既定値は,次のようになります。
・更新対象の列にDEFAULT句の指定がある場合は,指定した既定値となります。
・DEFAULT句の指定がなく,WITH DEFAULTの指定がある場合は,WITH DEFAULTの既定値となります。
・DEFAULT句,及びWITH DEFAULTのどちらの指定もない場合,NULLが既定値となります。
- 要素の値の規則
- 埋込み変数,標識変数は,PREPARE文で前処理するUPDATE文,及び手続き中には指定できません。手続き中では,SQL変数又はSQLパラメタを使用します。
- 埋込み変数(標識変数),?パラメタ,SQL変数,又はSQLパラメタを指定する場合,埋込み変数(?パラメタの場合は,それに値を与えるために指定する埋込み変数),SQL変数,又はSQLパラメタのデータ型は,更新する列のデータ型,又は変換できるデータ型にしてください。また,埋込み変数(標識変数),?パラメタの構造は単純構造にしてください。
- 標識変数を指定した場合は,標識変数の値が負のとき,埋込み変数の値がナル値と解釈され,対応する列にナル値が設定されます。標識変数の値が0又は正の場合,埋込み変数の値が対応する列に設定されます。
- ?パラメタは,PREPARE文で前処理をするUPDATE文の場合にだけ指定できます。?パラメタに与える値は,前処理をしたPREPARE文に対応するEXECUTE文のUSING句の埋込み変数で指定します。
- 要素の値には,更新対象になる列と変換・比較できるデータ型にしてください。ただし,更新対象になる列が各国文字データ型で,更新値として文字列定数を指定した場合,文字列定数を各国文字列定数とみなします。文字列定数を各国文字列定数とみなした場合,文字コードのチェックはしないで,文字データの長さだけチェックします。
- 要素の値としてスカラ副問合せを指定する場合は,スカラ副問合せの選択式に添字のない繰返し列を指定できません。
- 要素の値としてDEFAULTを指定する場合,既定値はナル値となります。
- 連結演算を使用してBLOB型,又は定義長が32,001バイト以上のBINARY型の列を更新する場合の規則
- 連結演算の第1演算項には,列指定が指定できます。第2演算項には,埋込み変数,?パラメタ,SQL変数,及びSQLパラメタを指定できます。
- 更新値としてBLOB型,又は定義長が32,001バイト以上のBINARY型の連結演算を指定する場合,更新対象と連結演算の第1演算項には,必ず同じ列を指定してください。
- 連結演算の結果に対して,連結演算は指定できません。
- BLOB型と連結できるデータ型は,BLOB型だけです。数データ,文字データ,各国文字データ,又は混在文字データとは連結できません。
- BINARY型と連結できるデータ型は,BINARY型だけです。数データ,文字データ,各国文字データ,及び混在文字データとは連結できません。
- 連結演算の結果は,第1演算項又は第2演算項の値の非ナル値制約の有無に関係なく,ナル値を許します。
- 連結演算の結果の実長が,BLOB型,又はBINARY型の最大長(2,147,483,647バイト)を超えた場合はエラーになります。
- 更新対象の表に次の定義がある場合,連結演算を使用した更新はエラーになります。
・更新対象の表にUPDATEトリガを定義している
・連結演算を使用して更新する列を検査制約の探索条件に指定している
- SET (更新対象,更新対象〔,更新対象〕…)=行副問合せ
行副問合せの結果で,複数の列の値を更新する場合に指定します。なお,更新対象は2個以上指定してください。
- 列名
- 更新する列の名称を指定します。
- コンポネント指定
- 更新する抽象データ型の属性を指定します。
- 列名 [{添字|*}]
- 列名
- 要素を更新する繰返し列を指定します。
- [{添字|*}]
- 添字には,更新する要素の位置を指定します。*は,要素の最後を更新する場合に指定します。
- *を指定した場合,更新対象となっている繰返し列の要素が0のときは,*の指定は無効となります。
- 行副問合せ
- 更新するデータを取り出す行副問合せを指定します。行副問合せについては,「2.4 副問合せ」を参照してください。
- 行副問合せについての規則を次に示します。
- 更新対象の数と,行副問合せの選択式の数は同じにしてください。
- 行副問合せで得られる列のデータ型は,更新対象の列又は属性と同じデータ型,又は変換できるデータ型にしてください。
- 更新対象のデータ型が文字データ型の場合,更新対象の文字集合と行副問合せで得られる列の文字集合は同じにしてください。
- 更新対象に添字のない繰返し列を指定する場合,行副問合せの選択式の列は添字のない繰返し列の列名を指定してください。
- 更新対象に添字のある繰返し列を指定する場合,行副問合せの選択式の列に添字のない繰返し列の列名は指定できません。
- SET句共通規則
- SET句で添字を指定して繰返し列の要素を更新する場合,同じSET句内で同じ列の同じ要素に対する更新は,1回だけ指定できます。
- SET句で添字を指定しないで繰返し列を更新する場合,同じSET句内で添字を指定してその繰返し列を更新できません。
- 添字に*を指定して繰返し列を更新する場合,同じSET句内でその繰返し列を更新できません。
- ADD繰返し列名 [{添字|*}]
={ARRAY[要素の値〔,要素の値〕…]
|?パラメタ|:埋込み変数〔:標識変数〕}
繰返し列の要素を追加する場合に指定します。
- 繰返し列名 [{添字|*}]
- 繰返し列名
- 要素を追加する繰返し列を指定します。
- [{添字|*}]
- 添字には,追加する要素の位置を指定します。*は,最後に要素を追加する場合に指定します。
- ARRAY [要素の値〔,要素の値〕…]
- 要素の値として,次に示す項目が指定できます。
- 繰返し列以外の列名
- 添字付き繰返し列
- 定数
- 値式(四則演算,連結演算を含みます)
- スカラ副問合せ
- USER
- CURRENT_DATE
- CURRENT_TIME
- CURRENT_TIMESTAMP〔(p)〕
- NULL(ナル値を表します)
- DEFAULT
- :埋込み変数〔:標識変数〕
- ?パラメタ
- SQL変数,又はSQLパラメタ
- 要素の値の規則については,SET更新対象=更新値の「要素の値の規則」を参照してください。
- ?パラメタ
- ?パラメタのデータ型は,更新する列のデータ型,又は変換できるデータ型にしてください。また,?パラメタの構造は繰返し構造にしてください。
- ?パラメタは,PREPARE文で前処理をするUPDATE文の場合にだけ指定できます。?パラメタに与える値は,前処理をしたPREPARE文に対応するEXECUTE文のUSING句の埋込み変数で指定します。
- :埋込み変数〔:標識変数〕
- 埋込み変数,標識変数は,PREPARE文で前処理するUPDATE文,又は手続き中には指定できません。
- 埋込み変数(標識変数)のデータ型は,更新する列のデータ型,又は変換できるデータ型にしてください。また,埋込み変数(標識変数)の構造は,繰返し構造にしてください。
- 標識変数を指定した場合は,標識変数の値が負のとき,埋込み変数の値がナル値と解釈され,対応する列にナル値が設定されます。標識変数の値が0又は正の場合,埋込み変数の値が対応する列に設定されます。
- ADD句共通規則
- 一つのADD句には,一つの列に対する要素の追加は,1回だけ指定できます。
- 要素を追加する場合,追加後の要素数が最大要素数を超えないようにしてください。
- ARRAY [要素の値〔,要素の値〕…]の中の要素の値は,最大30,000個指定できます。
- 添字で指定した場所より後ろの要素は,新しく追加した要素の後ろに移動します。添字に,要素追加の対象となっている繰返し列の要素の数よりも2以上大きい数を指定した場合は,その繰返し列の要素の数が(指定した要素)-1になるまでナル値を追加して,その後ろに要素の値を追加します。
- 追加対象列に複数列インデクスが定義されている場合,そのインデクスを構成するすべての繰返し列に,一つのADD句で同じ数の要素を同じ要素の位置で指定して追加してください。
- WHERE句にCURRENT OFカーソル名を指定して,カーソルを用いた要素の追加をする場合,ADD句の要素の値には列名及び値式を指定できません。
- 要素の値としてDEFAULTを指定する場合,既定値はナル値になります。
- DELETE繰返し列名 [{添字|*}]
- 繰返し列の要素を削除する場合に指定します。
- 繰返し列名 [{添字|*}]
- 繰返し列名
- 要素を削除する繰返し列を指定します。
- [{添字|*}]
- 添字には,削除する要素の位置を指定します。*は,最後の要素を削除する場合に指定します。
- DELETE句共通規則
- DELETE句で添字を指定して要素を削除する場合は,同じDELETE句内で同じ列の同じ要素に対する削除は1回だけ指定できます。
- 添字に,要素の削除対象になっている列の要素の数より大きい数を指定できません。
- 要素に*を指定して繰返し列の要素を削除する場合は,同じDELETE句内でその列の要素を同時に指定できません。
- 削除された要素よりも後ろの要素は,一つずつ繰り上がります。
- 削除対象の列に複数列インデクスが定義されている場合,そのインデクスを構成するすべての繰返し列に,一つのDELETE句で同じ数の要素を同じ要素の位置で指定して削除してください。
- 〔WHERE{探索条件| CURRENT OF{カーソル名|拡張カーソル名}}〕
省略すると,指定した表のすべての行が更新されます。
- 探索条件
- 更新の対象となる行を選択する条件を指定します。
- この探索条件を満足するすべての行を更新します。
- カーソル名
- 更新する行を指すカーソルの名称を指定します。
- PREPARE文で前処理する場合は,指定できません。
- カーソル名で指定するカーソルは,カーソル宣言で宣言されたカーソルにしてください。カーソル宣言のFOR UPDATE句に,UPDATE文で値を更新する列名を指定しておいてください。
- カーソル名を指定する場合は,カーソル宣言で指定したカーソルが更新できなければなりません。更新できるカーソルについては,「4. DECLARE CURSOR 形式1(カーソル宣言)」の共通規則4.を参照してください。
- カーソル名で指定するカーソルは,OPEN文で開き,FETCH文で更新する行に位置づけてください。
- カーソル名で指定するカーソルの位置は,UPDATE文実行後も同じです。更新した行よりも後の行を更新する場合は,そのカーソルに対してFETCH文を実行して,カーソルを移動させます。
- 拡張カーソル名
- 更新する行を指すカーソルを識別する拡張カーソル名を指定します。
- PREPARE文で前処理する場合は,指定できません。
- ALLOCATE CURSOR文で割り当てられたカーソルを識別している拡張カーソル名を指定してください。ただし,結果集合カーソルは指定できません。
- 拡張カーソル名を指定する場合は,FOR UPDATE句の指定のある問合せに対する拡張カーソルを指定しなければなりません。FOR UPDATE句については,「4. 動的SELECT文 形式1(動的検索)」のオペランド規則のFOR UPDATE句を参照してください。
- 拡張カーソル名が識別するカーソルは,開いた状態であり,かつ更新する行に位置づけられている必要があります。
- 拡張カーソル名が識別するカーソルの位置は,UPDATE文実行後も同じです。更新した行よりも後の行を更新する場合は,そのカーソルに対してFETCH文を実行して,カーソルを移動させます。
- 拡張カーソル名については,「2.27 拡張カーソル名」を参照してください。
更新の対象となる表が,ほかのユーザで使用されているとき,トランザクションを取り消して無効にする場合,指定します。
WITH ROLLBACKを省略した場合は,更新する表がほかのユーザで使用されているとき,使用中のユーザのトランザクションが終了してから実行します。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.