機能
カーソルによって位置づけられた1行を更新します。
記述形式
参照項番
値式 → “2.11 値式”
権限
UPDATE文:位置づけを実行できるのは、処理対象の表のUPDATE権の保持者です。
一般規則
カーソルは、開かれた状態であり、FETCH文により位置づけられていることが必要です。
カーソルにより位置づけられている行が更新されます。
UPDATE文にROWNUMは指定できません。
更新する表の名前を指定します。
表名で指定する表は、カーソル宣言のカーソル指定に指定されていることが必要です。
カーソル宣言のカーソル指定に導出表が記述されている場合、表名には導出表の元となる表を指定します。
表名にOBJECT構造の表を指定することはできません。
表名で指定した表が、“WITH CHECK OPTION”を指定したビュー表の場合、更新する値はビュー表の探索条件に対して真でなければなりません。そうでなければ、例外(WITH CHECK OPTIONに違反)となります。
設定句で指定した列は、値式、NULL値または既定値に変更されます。
設定句の値式に含まれる列指定が、UPDATE文:位置づけの対象となる表の列を指定しているとき、取り出される列の値は、更新される前の値です。
列名は、更新する列の名前を指定します。
設定句に指定する列名は、表名で指定した表の列であることが必要です。また、同じ列名を複数回指定することはできません。
設定句で指定する値式に集合関数を指定することはできません。
更新対象の列のデータ型が文字列型で、値式のデータ型が真数型、概数型または日時型の場合、値式のデータを文字列型に暗黙的に型変換して代入します。
更新対象の列のデータ型が真数型で、値式のデータ型が文字列型の場合、値式のデータを真数型に暗黙的に型変換して代入します。
更新対象の列のデータ型が概数型で、値式のデータ型が文字列型の場合、値式のデータを概数型に暗黙的に型変換して代入します。
更新対象の列のデータ型が日時型で、値式のデータ型が文字列型の場合、値式のデータを日時型に暗黙的に型変換して代入します。
値式のデータ型は文字列型、真数型、概数型または日時型であることが必要です。真数型/概数型または日時型が指定できるのは、値式を定数または変数指定で指定した場合のみです。
値式のデータ型は各国語文字列型であることが必要です。
値式のデータ型は真数型、概数型または文字列型であることが必要です。文字列型が指定できるのは、値式を定数または変数指定で指定した場合のみです。値式のデータ型が文字列型の場合、データは符号つき数定数の形式になるように指定してください。
例1
UPDATE 会社管理.従業員表 SET 従業員番号 = '123' WHERE CURRENT OF CSR1
→ 文字列データ'123'を真数型に型変換して代入します。
例2
UPDATE 会社管理.従業員表 SET 従業員番号 = 'F123' WHERE CURRENT OF CSR1
→ 結果はエラーとなります。文字列データは、符号つき数定数の形式で指定する必要があります。
値式のデータ型は真数型、概数型または文字列型であることが必要です。文字列型が指定できるのは、値式を定数または変数指定で指定した場合のみです。値式のデータ型が文字列型の場合、データは符号つき数定数の形式になるように指定してください。
値式のデータ型は文字列型またはDATE型であることが必要です。文字列型が指定できるのは、値式を定数または変数指定で指定した場合のみです。値式のデータ型が文字列型の場合、データは日時定数の形式になるように指定してください。
例1
UPDATE 会社管理.従業員表 SET 営業日 = '2007-01-02' WHERE CURRENT OF CSR1
→ 文字列データ'2007-01-02'をDATE型に型変換して代入します。
例2
UPDATE 会社管理.従業員表 SET 営業日 = '2007/1/2' WHERE CURRENT OF CSR1
→ 結果はエラーとなります。文字列データは、日時定数の形式で指定する必要があります。
値式のデータ型は文字列型またはTIME型であることが必要です。文字列型が指定できるのは、値式を定数または変数指定で指定した場合のみです。値式のデータ型が文字列型の場合、データは日時定数の形式になるように指定してください。
値式のデータ型は文字列型またはTIMESTAMP型であることが必要です。文字列型が指定できるのは、値式を定数または変数指定で指定した場合のみです。値式のデータ型が文字列型の場合、データは日時定数の形式になるように指定してください。
値式のデータ型は文字列型、真数型または時間隔型であることが必要です。文字列型、真数型が指定できるのは、値式を変数指定で指定した場合のみです。真数型を指定する場合、更新対象の列のデータ型が単一日時フィールドで指定された時間隔型でなければなりません。
値式のデータ型はBLOB型であることが必要です。
NULLを指定するときは、対応する列がNULL値を許していることが必要です。
DEFAULTを指定する場合は、表定義時にDEFAULT句を設定していないと、NULLが設定されます。表定義時にDEFAULT句を指定していればそのDEFAULT値が設定されます。
更新値が対象列に設定されるときの規則は次のようになります。
更新値の右側の空白を除くデータ長が対象列の長さと同じ場合は、文字データがそのまま設定されます。更新値の右側の空白を除くデータ長が対象列の長さよりも短い場合は、更新値が対象列の左側から設定され、対象列の残り部分には空白が設定されます。更新値の右側の空白を除くデータ長が対象列の長さよりも長い場合は、データ例外(文字データのトランケート)となります。
文字列型の場合と同じように設定されます。
対象列のデータ型に変換して設定されます。更新値の整数部が対象列の精度と位取りで表現できる場合は、対象列の精度と位取りに従って設定されます。上位の桁落ちが発生する場合は例外となり、下位の位が落ちる場合は切り捨てられます。
対象列には、更新値の概数値が設定されます。
対象列のデータ型に変換して設定されます。
対象列のデータ型に変換して設定されます。ただし、時間隔型が年月の場合は年月のデータ型に、時間隔型が日時の場合は日時のデータ型にそれぞれ設定されます。
対象列には、更新値のバイナリ値が設定されます。
カーソルの名前を指定します。
カーソル名は、同一コンパイル単位に含まれるカーソル宣言で定義されていることが必要です。
設定句の値式に動的パラメタ指定が指定された場合のDESCRIBE情報は、対応する列のデータ型になります。
使用例
表TBL1のカーソルが位置づけられている行を更新する例を示します。
UPDATE TBL1 SET COL2 = 'A',COL3 = NULL WHERE CURRENT OF CSR1
CSR1は、このUPDATE文と同一コンパイル単位内で定義されたカーソルとします。現在、カーソルCSR1が位置づけられている行を更新します。