【DELETEステートメント】
DELETEステートメントは、テーブルのデータを削除するためのステートメントです。
売上テーブルから任意のお客様番号、売上年月、商品コードのキーのデータを削除するSQLを記述してみます。
キーは、お客様番号=CUST01、売上年月=200001、商品コード=A0000001とします。
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
DELETE FROM SALTBL
WHERE CUSTCD = ‘CUST01’
AND SALYM = ‘200001’
AND SYOHIN = ‘A0000001’
END-EXEC.
(2)登録した結果を判定する
EVALUATE SQLCODE
WHEN ZERO
正常に削除できた場合の処理を行う
WHEN -100
削除する対象のデータが存在しない場合の処理を行う
WHEN OTHER
異常発生時の処理を行う
END-EVALUATE.
(1)の部分がSQLステートメントです。
①SQLを記述する場合、先頭に「EXEC SQL」最後に「END-EXEC」
と記述します。
②「DELETE FROM」は、テーブルに登録されているデータを削除する場合に記述します。
③「SALTBL」は、削除するデータが登録されているテーブル名(SALTBL)を記述します。
④「WHERE」は、削除するデータを特定するためのキーの記述です。
(2)はDELETEの結果を判定して、対応する処理を行います。
結果の判定はSQLCODEという項目名の値を判定します。
DBMSの種類によって、SQLCODEの値の意味が異なりますので注意が必要です。
①正常に削除できた場合、SQLCODEはZEROになりますので、正常に削除された場合の処理を行います。
②WHEREで記述したキーが存在しない場合、SQLCODEは-100になりますので、削除するデータが存在しない場合の処理を行います。
③上記以外いずれでもない場合は、異常状態ですからこれ以上処理を継続することはできません。
一般的な処理は、異常状態を知らせる処理を行って終了します。
コメントを書く