【UPDATEステートメント】
UPDATEステートメントは、テーブルのデータを更新するためのステートメントです。
売上テーブルから任意のお客様番号、売上年月、商品コードをキーとして数量と金額を更新するSQLを記述してみます。
キーは、お客様番号=CUST01、売上年月=200001、商品コード=A0000001。 更新する列名と値は、数量=20、金額=20000とします。
SALTBL(売上テーブル)
お客様番号 | 売上年月 | 商品番号 | 単価 | 数量 | 金額 |
CUSTCD(6桁) | SALYM(6桁) | SYOHIN(8桁) | TANKA(6桁) | SURYO(6桁) | KINGAKU(6桁) |
CUST01 | 200001 | A0000001 | 1000 | 10 | 10000 |
CUST01 | 200001 | B0000001 | 2000 | 10 | 20000 |
CUST02 | 200001 | A0000001 | 3000 | 10 | 30000 |
(1)売上テーブルを更新するSQL
EXEC SQL
UPDATE SALTBL
SET
SURYO = 20,
KINGAKU = 20000
WHERE CUSTCD = ‘CUST01’
AND SALYM = ‘200001’
AND SYOHIN = ‘A0000001’
END-EXEC.
(2)登録した結果を判定する
EVALUATE SQLCODE
WHEN ZERO
更新できた場合の処理を行う
WHEN OTHER
異常発生時の処理を行う
END-EVALUATE.
(1)の部分がSQLステートメントです。
①SQLを記述する場合、先頭に「EXEC SQL」最後に「END-EXEC」と記述します。
②「UPDATE」は、テーブルを更新する場合に記述します。
③「SALTBL」は、更新するテーブル名(SALTBL)を記述します。
④SETは、更新するテーブルの列名(項目名)と値を記述します。
複数の列名を更新する場合、「,」を記述して次の列名を記述します。(最後の列名の後は「,」を記述しない。)
⑤「WHERE」は、更新する行を特定するためのキーの記述です。
(2)はUPDATEの結果を判定して、対応する処理を行います。
結果の判定はSQLCODEという項目名の値を判定します。
DBMSの種類によって、SQLCODEの値の意味が異なりますので注意が必要です。
①正常に更新できた場合、SQLCODEはZEROになりますので、正常に更新された場合の処理を行います。
②WHEREで記述したキーが存在しない場合、SQLCODEは-100になりますので、更新するデータが存在しない場合の処理を行います。
③上記以外いずれでもない場合は、異常状態ですからこれ以上処理を継続することはできません。
一般的な処理は、異常状態を知らせる処理を行って終了します。
コメントを書く