COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

24.1.1 埋め込みSQL文を使ったCOBOLプログラムの作成

埋め込みSQL文によるデータベースアクセスの方法は,SQLをCOBOLプログラム中に埋め込んで実行する方法(静的に行う方法)と,SQLを実行時に生成し,SQL文の埋め込み変数に設定して実行する方法(動的に行う方法)があります。

埋め込みSQL文のSELECT文は,表から1行分の値を取り出す文(SELECT文:単一行)です。複数行の値を取り出す場合は,カーソルを使用します。カーソルの使用には,静的に行う方法と動的に行う方法があります。また,ストアドプロシージャを呼び出して,一連の手続きを行う方法もあります。

<この項の構成>
(1) COBOLプログラムで使用できるSQL文
(2) 埋め込みSQL宣言節
(3) 埋め込み例外宣言
(4) カーソル宣言
(5) 識別子
(6) トランザクション
(7) SQL文の実行順序

(1) COBOLプログラムで使用できるSQL文

COBOLプログラムで使用できる埋め込みSQL文を次に示します。

表24-1 COBOLプログラムで使用できる埋め込みSQL文

種類 分類 SQL文 内容
宣言系 埋め込みSQL宣言節 BEGIN DECLARE SECTION 埋め込みSQL開始宣言
END DECLARE SECTION 埋め込みSQL終了宣言
埋め込み例外宣言 WHENEVER 埋め込み例外宣言
カーソル DECLARE CURSOR カーソル宣言
制御系 コネクション CONNECT コネクションを確立する
DISCONNECT コネクションを解除する
SET CONNECTION 現行コネクションを変更する
トランザクション COMMIT コミットでトランザクションを終了させる
ROLLBACK ロールバックでトランザクションを終了させる
操作系 静的 SELECT 表の指定された行から値を取り出す
INSERT 表に新しい行を作成する
DELETE 表から行を削除する
UPDATE 表の行を更新する
カーソル OPEN カーソルを開く
FETCH カーソルを表の次の行に位置づけ,その行を取り出す
CLOSE カーソルを閉じる
ストアドプロシージャ CALL ストアドプロシージャを呼び出す
動的 EXECUTE IMMEDIATE 動的SQLを準備し,実行する
PREPARE 動的SQLを準備する
DEALLOCATE PREPARE 準備した動的SQLを解放する
EXECUTE 動的SQLを実行する

(2) 埋め込みSQL宣言節

埋め込みSQL開始宣言から埋め込みSQL終了宣言までを,埋め込みSQL宣言節といいます。埋め込みSQL宣言節は,データ部に定義します。

埋め込みSQL宣言節には,SQLCODE変数,埋め込み変数,および標識変数を定義します。

(3) 埋め込み例外宣言

埋め込み例外宣言は,宣言系以外のSQL文の実行後の例外処理を記述します。

(4) カーソル宣言

カーソル宣言は,OPEN文などでカーソルを使用する場合に,手続き部に定義します。カーソル宣言に誤りがあると,そのカーソル名に対するOPEN文の実行がエラーになります。

(5) 識別子

カーソル名,表名,列名,プロシージャ名などを表す識別子は,データベースによっても規定されます。したがって,正常にコンパイルされたプログラムでも,SQL文の実行が失敗することがあります。このような場合は,DBMSのマニュアルなどを参照してください。また,-EquivRuleコンパイラオプションの指定がない場合,等価規則が適用されます。等価規則については,マニュアル「COBOL2002 言語 標準仕様編 4.1.2 COBOL文字集合」を参照してください。

使用するデータベースを意識しないで運用したい場合は,カーソル名を英字で始まる18文字以内の文字列で定義することを推奨します。

(6) トランザクション

トランザクションは,コネクションを確立したとき,または明示的にコミットやロールバックされたときから開始され,明示的,または暗黙的なコミット,ロールバックされたときに終了されます。トランザクションは,コネクションごとに管理されます。

一つのデータベースに対して複数のプログラム(コネクション)からアクセスする場合,デッドロックが発生する可能性があります。デッドロックが発生する可能性を低くするために,プログラム作成時には次のことに注意してください。

(7) SQL文の実行順序

SQL文は,次に示す順序で実行する必要があります。

図24-1 SQL文の実行順序

[図データ]

注※ 動的SQL文を使用する場合については,次に示す順序を参照してください。

図24-2 動的SQL文の実行順序

[図データ]