UPDATE [RECORD ] [IN ] [STATEMENT ] [(r)]
|
UPDATE
|
[RECORD ] [IN ] [STATEMENT ] [(r)]
|
|||||
SET |
||||||
WITH |
SAME [RECORD ]
|
|||||
USING |
{operand1= operand2}
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION DATA | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE
関連機能グループ:「データベースへのアクセスと更新」
UPDATE
ステートメントは、データベースレコードの 1 つ以上のフィールドを更新するために使用します。 更新するレコードは、FIND
、GET
、READ
(または Adabas の場合は STORE
)ステートメントで事前に選択されている必要があります。
UPDATE
ステートメントの使用により、対応する FIND
や READ
ステートメントで選択された各レコードはホールド状態になります。
詳細については、「レコードホールドロジック(『プログラミングガイド』)を参照してください。
UPDATE
ステートメントを、更新するレコードを選択するステートメントと同一行に入力しないでください。
UPDATE
ステートメントは Entire System Server ビューには適用できません。
DL/I |
マルチプルバリューフィールドまたはピリオディックグループが可変長として定義されている場合、 DL/I AIX フィールド名は、 DL/I シーケンスフィールドは DL/I 制限のために更新できません。 GSAM 制限により、 |
---|---|
VSAM |
VSAM プライマリキーは VSAM 制限のために更新できません。 DL/I AIX フィールド名は、 |
SQL |
プログラム内で変更された列(フィールド)のみが、プログラム外(マップの入力フィールドなど)で変更された可能性のある(実際に変更されている必要はない)列に加えて更新されます。 他のすべてのプラットフォームでは、すべての列が更新されます。 ほとんどの SQL データベースで、 |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | A | N | P | I | F | B | D | T | L | 不可 | 不可 | |||||||
operand2 | C | S | A | A | N | P | I | F | B | D | T | L | 可 | 不可 |
構文要素の説明:
(r) |
ステートメント参照:
表記 参照指定がなければ、 |
---|---|
USING SAME |
この節は、 レコードバッファまたはフォーマットバッファのレイアウトは、
更新するフィールドがマルチプルバリューフィールドやピリオディックグループの配列範囲で、この配列範囲に変数インデックスを使用する場合、最新の範囲が更新されます。 つまり、レコードが読み込まれた後で、かつ |
SET/WITH operand1=operand2 |
この節は、レポーティングモードで更新するフィールドと値を指定するために使用します。 この節は、 注意: |
** Example 'UPDEX1S': UPDATE (structured mode) ** ** CAUTION: Executing this example will modify the database records! ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 CITY * 1 #NAME (A20) END-DEFINE * INPUT 'ENTER A NAME:' #NAME (AD=M) IF #NAME = ' ' STOP END-IF * FIND EMPLOY-VIEW WITH NAME = #NAME IF NO RECORDS FOUND REINPUT WITH 'NO RECORDS FOUND' MARK 1 END-NOREC INPUT 'NAME: ' NAME (AD=O) / 'FIRST NAME:' FIRST-NAME (AD=M) / 'CITY: ' CITY (AD=M) UPDATE END TRANSACTION END-FIND * END
ENTER A NAME: BROWN
NAME: BROWN FIRST NAME: KENNETH CITY: DERBY
レポーティングモードの例はライブラリ SYSEXRM のプログラム UPDEX1R を参照してください。