COBOLで学ぶWHERE句の条件付き検索!初心者向けデータ取得の基本
生徒
「先生、COBOLでデータベースから特定の条件に合うデータだけ取得することってできますか?」
先生
「できます。それがWHERE句を使った条件付き検索です。SQLの基本のひとつで、指定した条件に合うレコードだけを抽出できます。」
生徒
「具体的にはどのように使うのですか?」
先生
「それでは、実際に例を見ながら説明しましょう。」
1. WHERE句とは?
COBOLでデータベースを操作するとき、WHERE句は検索条件を指定するために使います。たとえば、社員テーブルから特定の部署に所属する社員だけを取得したい場合に利用します。条件付き検索を行うことで、必要なデータだけを効率的に抽出できます。
2. WHERE句の基本構文
COBOLでSQLを埋め込む場合、EXEC SQLとEND-EXECで囲んで書きます。WHERE句を使った基本的な構文は次の通りです。
EXEC SQL
SELECT EMPLOYEE_ID, EMP_NAME, DEPT
INTO :EMP-ID, :EMP-NAME, :EMP-DEPT
FROM EMPLOYEE
WHERE DEPT = :TARGET-DEPT
END-EXEC.
この例では、社員テーブル(EMPLOYEE)から、指定した部署(TARGET-DEPT)に所属する社員のID、名前、部署を取得しています。
3. WHERE句で使える条件
WHERE句では次のような条件が使えます。
- = : 等しい(例:DEPT = '営業')
- < > : 等しくない(例:AGE <> 30)
- <, <=, >, >= : 大小比較(例:SALARY > 50000)
- AND, OR : 複数条件の組み合わせ(例:DEPT = '営業' AND SALARY > 50000)
- BETWEEN : 範囲指定(例:AGE BETWEEN 25 AND 35)
- LIKE : 部分一致検索(例:EMP_NAME LIKE '山田%')
条件を工夫することで、より柔軟な検索が可能になります。
4. 実践例:営業部の社員を検索する
WORKING-STORAGE SECTION.
01 EMP-ID PIC 9(4).
01 EMP-NAME PIC X(20).
01 EMP-DEPT PIC X(10).
01 TARGET-DEPT PIC X(10) VALUE '営業'.
PROCEDURE DIVISION.
EXEC SQL
SELECT EMPLOYEE_ID, EMP_NAME, DEPT
INTO :EMP-ID, :EMP-NAME, :EMP-DEPT
FROM EMPLOYEE
WHERE DEPT = :TARGET-DEPT
END-EXEC.
IF SQLCODE = 0
DISPLAY "検索成功:" EMP-NAME " (ID:" EMP-ID ")"
ELSE
DISPLAY "検索失敗:" SQLCODE
END-IF.
検索成功:田中太郎 (ID:1001)
この例では、営業部の社員だけを検索し、成功すれば名前とIDを表示しています。SQLCODEでエラーをチェックすることで、安全にデータを取得できます。
5. 初心者向けポイント
WHERE句を使うと、必要なデータだけを効率的に取得できます。プログラミング未経験の方でも、条件を工夫すれば抽出したいデータを簡単に指定できるのがポイントです。また、SQLCODEやSQLSTATEを使って検索結果やエラーを確認する習慣をつけることで、安全にデータベース操作ができるようになります。
6. 複数条件での検索
複数条件を組み合わせる場合、ANDやORを使用します。
EXEC SQL
SELECT EMPLOYEE_ID, EMP_NAME
INTO :EMP-ID, :EMP-NAME
FROM EMPLOYEE
WHERE DEPT = :TARGET-DEPT
AND SALARY > 50000
END-EXEC.
このようにすれば、営業部で給与が50000以上の社員だけを抽出できます。複雑な条件もWHERE句で簡単に指定できるのがCOBOLの特徴です。