COBOLでDELETE文を使ったデータ削除の基本!初心者向け解説
生徒
「先生、COBOLでデータベースから不要なデータを削除したいときはどうしたらいいですか?」
先生
「その場合はDELETE文を使います。DELETE文は、指定した条件に合うデータを削除するSQL文です。」
生徒
「削除するときに気を付けることはありますか?」
先生
「はい、条件を指定せずにDELETEするとテーブル全体のデータが消えてしまうので、必ずWHERE句を使って対象を絞ることが重要です。」
1. DELETE文とは?
DELETE文は、データベースのテーブルから特定の行を削除するために使用します。テーブル内の行を指定する条件がない場合、全ての行が削除されるため非常に注意が必要です。例えば社員テーブルから退職した社員のデータだけを削除したい場合に使います。WHERE句で条件を指定し、削除対象を明確にすることがポイントです。
2. COBOLでDELETE文を使う基本構文
COBOLでは、DELETE文をEXEC SQLとEND-EXECで囲みます。削除対象の条件はホスト変数を使うことで、安全に値を渡すことができます。
WORKING-STORAGE SECTION.
01 EMP-ID PIC 9(4) VALUE 1004.
PROCEDURE DIVISION.
EXEC SQL
DELETE FROM EMPLOYEE
WHERE EMPLOYEE_ID = :EMP-ID
END-EXEC.
この例では、社員IDが1004の社員のデータを削除しています。
3. ホスト変数を使う理由
ホスト変数を使うことで、プログラム内の変数から値を安全にSQL文に渡せます。直接値をSQL文に書くよりも、可読性や保守性が向上し、セキュリティ上も安全です。また、複数の削除条件を動的に変更したい場合にも便利です。
4. DELETE文を使うときの注意点
- 条件を指定しないDELETEはテーブル全体を削除する危険がある。
- ホスト変数の型をテーブルの列と一致させる。
- 削除対象の行が存在しない場合、削除は行われない。
- 削除後は
SQLCODEを確認し、正常に削除できたかをチェックする。
5. 実践例:退職社員のデータ削除
WORKING-STORAGE SECTION.
01 EMP-ID PIC 9(4) VALUE 1010.
PROCEDURE DIVISION.
EXEC SQL
DELETE FROM EMPLOYEE
WHERE EMPLOYEE_ID = :EMP-ID
END-EXEC.
IF SQLCODE = 0
DISPLAY "削除成功:" EMP-ID " の社員データを削除しました。"
ELSE
DISPLAY "削除失敗:" SQLCODE
END-IF.
削除成功:1010 の社員データを削除しました。
この例では、社員IDが1010のデータを削除し、SQLCODEを確認して削除結果を表示しています。COBOLのDELETE文を使うことで、必要なデータだけを安全に削除できることがわかります。
6. 初心者向けポイント
DELETE文を使うときは、必ずWHERE句で削除対象を絞ること、ホスト変数を使用して安全に値を渡すこと、そしてSQLCODEで削除結果を確認することが大切です。小規模なテーブルで練習し、削除処理の流れを理解してから本番環境で使用することをおすすめします。