COBOLのDBアクセスパターンを学ぼう!「ALTER TABLE」| 応用ガイド

COBOL(コボル)言語ででテーブルを変更する「ALTER TABLE」とは?

応用-ALTER TABLE-イメージ

COBOL(コボル)言語のDBアクセス「ALTER TABLE」とは?

リレーショナル型のデータベースで、既存テーブルの定義を変更する際には「ALTER TABLE」を使用します。ALTER TABLEを使用すると、列の追加・削除、列名やデータ型の変更など、テーブル構造を更新できます。本記事では、実務でもよく使われる「ALTER TABLE ADD」(指定したテーブルに列を追加する)を取り上げ、基本的な書き方と処理構成を解説します。

書き方:

ALTER TABLE ADD 表名 ( 列名1 データ型1 )

COBOL(コボル)言語のDBアクセス「ALTER TABLE」の処理構成

COBOL(コボル)言語でSQLを利用する際には、データベースに接続するなど共通の処理を実施しておく必要があります。どのようなSQLを使う場合にも必要になりますので、その使い方について理解しましょう。

[DB利用の基本的な処理構成]

1.ホスト変数の定義、2.共通領域の定義、3.データベース接続、4.データベースアクセス

各処理で実施する処理内容は以下の通りです。

1.ホスト変数の定義

COBOLとDB間のデータ連携では、変数として定義した項目を利用する必要があります。この変数を利用してDBから取得したデータをCOBOLで加工、編集して利用する使い方になります。

2.共通領域の定義

DBで発生したエラー情報を格納する領域です。DB利用で発生したエラーをもとにエラーハンドリングして利用します。直接の処理をここで定義することはありません。

3.データベース接続

DBにアクセスする際は、ユーザID、パスワードを利用して接続することになります。
この接続についてもプログラミングして定義しておきます。

4.データベースアクセス

1~3の準備が整った後、初めてSQL文を記述することができます。今回ご紹介する「ALTER TABLE」文はこの領域を利用してプログラミングしていきます。また、テーブル変更を確定させるために「COMMIT」文を合わせて実行させることがポイントになります。

1.ホスト変数の定義~3.データベース接続はSQLを利用する際は必ず必要になりますので、一度サンプルを作成して他でも活用できるようにしておきましょう。

では基本的な処理構成について記述したサンプルプログラム(使用例1)を用意しましたので、その書き方について見ていきましょう。

使用例1:

※今回のDBMSは、オープンソースの「PostgreSQL」を使用しています。
※USERNAME、PASSWORDはご自身の環境に合わせて指定ください。
(省略します)

応用-ALTER TABLEプログラム1-使用例1

テーブル(test1:処理前):
応用-ALTER TABLEの対応プログラム1-実行結果 test1:処理前

テーブル(test1:処理後):
応用-ALTER TABLEの対応プログラム1-実行結果 test1:処理後

COBOL(コボル)言語のDBアクセス「ALTER TABLE」の応用的な使い方

DBアクセス及び「ALTER TABLE」の基本的な処理構成と書き方についてご理解いただけたでしょうか?今度は応用的な使い方について考えていきましょう。「ALTER TABLE」は今回ご紹介した「ALTER TABLE ADD」以外にも列を削除する「ALTER TABLE DROP」、表名を変更する「ALTER TABLE RENAME TO」などテーブルに対する様々な変更を行うことができます。実際にいろいろなSQL文を記述してみて、実践で使えるようになりましょう。

使用例2:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. db_alter_sample02.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. * 1.ホスト変数の定義
  7. EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  8. 01 DBNAME PIC X(32) VALUE "testdb".
  9. 01 USERNAME PIC X(32) VALUE "********".
  10. 01 PASSWORD PIC X(32) VALUE "********".
  11.  
  12. EXEC SQL END DECLARE SECTION END-EXEC.
  13.  
  14. * 2.共通領域の定義
  15. EXEC SQL INCLUDE SQLCA END-EXEC.
  16.  
  17. PROCEDURE DIVISION.
  18. * 3.データベース接続
  19. EXEC SQL
  20.  CONNECT :USERNAME IDENTIFIED BY :PASSWORD
  21.     USING :DBNAME
  22. END-EXEC.
  23.  
  24. * 4.データベースアクセス
  25. EXEC SQL
  26.  ALTER TABLE test1 DROP tadd
  27. END-EXEC.
  28. EXEC SQL
  29.  COMMIT
  30. END-EXEC.
  31. EXEC SQL
  32.  ALTER TABLE test1 RENAME TO test0
  33. END-EXEC.
  34. EXEC SQL
  35.  COMMIT
  36. END-EXEC.
  37. STOP RUN.
  38. END PROGRAM db_alter_sample02.

テーブル(test0:処理前):
応用-ALTER TABLEの対応プログラム2-実行結果test0:処理前

テーブル(test1:処理前):
応用-ALTER TABLEの対応プログラム2-実行結果test1:処理前

テーブル(test0:処理後):
応用-ALTER TABLEの対応プログラム2-実行結果test0:処理後

テーブル(test1:処理後):
応用-ALTER TABLEの対応プログラム2-実行結果test1:処理後

練習問題

最後に練習問題にチャレンジしてみましょう

問題) 「ALTER TABLE RENAME TO」はどのデータベースでも表名の変更として利用することができるでしょうか?

答え)

「ALTER TABLE RENAME TO」で表名を変更できるのは今回ご紹介したPostgreSQLやORACLEなどになり、MySQLなどでは利用できません。このようにSQLであっても使用できるデータベースが限定されていることがありますので、利用の際は注意するようにしましょう。

この記事を読んだ人は、こちらの記事も読んでいます

あなたのCOBOL技術を活かしませんか?

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験  |  辞書  |

取引企業様 募集中
COBOL技術者 募集
COBOL魂
COBOL入門