Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU - |
目次 索引 |
第3章 アプリケーションの作成 | > 3.2 SQL埋込みCOBOLプログラムの作成方法 |
ここでは、拡張カーソル名で指定されたカーソルの使用方法について説明します。
ALLOCATE CURSOR文を使用して宣言したカーソルを拡張カーソルといいます。
拡張カーソルは、ALLOCATE CURSOR文に拡張カーソル名および拡張SQL文識別子を指定して定義します。拡張カーソル名は、文字列型のホスト変数を使用して定義し、アプリケーションの実行時に値を動的に設定します。
拡張カーソル名は、以下のSQL文に指定できます。
ALLOCATE CURSOR文
動的CLOSE文
動的DELETE文:位置づけ
動的FETCH文
動的OPEN文
動的UPDATE文:位置づけ
拡張カーソル名を使用すると、ホスト変数を指定することによりカーソルの名前を実行時に動的に指定することが可能になるため、複数のカーソルを宣言する場合にカーソル宣言をまとめることができます。
そのため、多数のカーソルを操作するアプリケーションでも、開発量の削減を実現できます。
拡張カーソル名ではなくカーソル名を使用すると、カーソルの名前をSQL文中に識別子として文字列で指定するため、複数のカーソルを宣言する場合は、使用するカーソルの数だけカーソル宣言を記述する必要があります。
また、カーソルを操作する場合は、個々のカーソル名を記述したSQL文を記述しなければなりません。
そのため、多数のカーソルを使用するアプリケーションは、その開発規模が大きくなってしまいます。
拡張カーソル名を使用した場合とカーソル名を使用した場合で、複数のカーソルを宣言する例を以下に示します。
例1
拡張カーソル名を使用して、複数のカーソルを宣言する例を示します。
: 001010 PERFORM VARYING LOOP FROM 1 BY 1 UNTIL LOOP > nn 003010 EXEC SQL PREPARE :cmd1 FROM :strsql END-EXEC. (1) 003010 EXEC SQL ALLOCATE :cur1 CURSOR FOR :cmd1 END-EXEC.(2) 000000 END-PERFORM. :
(1)拡張SQL文識別子を使用して、ループによりnn個の準備可能文を準備します。
(2)拡張カーソル名を使用して、ループによりnn個のカーソルを宣言します。
例2
カーソル名を使用して、複数のカーソルを宣言する例を示します。
: 001000 EXEC SQL PREPARE CMD1 FROM :strsql END-EXEC. (1) 001010 EXEC SQL PREPARE CMD2 FROM :strsql END-EXEC. (1) 001020 EXEC SQL PREPARE CMD3 FROM :strsql END-EXEC. (1) : : 002010 EXEC SQL PREPARE CMDnn FROM :strsql END-EXEC. (1) : 002020 EXEC SQL DECLARE CUR1 CURSOR FOR CMD1 END-EXEC. (2) 002030 EXEC SQL DECLARE CUR2 CURSOR FOR CMD2 END-EXEC. (2) 002040 EXEC SQL DECLARE CUR3 CURSOR FOR CMD3 END-EXEC. (2) : : 002nn0 EXEC SQL DECLARE CURnn CURSOR FOR CMDnn END-EXEC. (2) :(1)SQL文識別子CMD1〜CMDnnを定義します。
(2)SQL文識別子CMD1〜CMDnnに対し、カーソルCUR1〜CURnnを宣言します。
拡張カーソル名の有効範囲はセションになります。
そのため複数のコンパイル単位にまたがって使用することができ、拡張カーソル名を使用するSQL文ごとにカプセル化し、共有することが可能です。
例
複数のコンパイル単位にまたがった拡張カーソルの使用例を示します。sub_pre.scob
000030 IDENTIFICATION DIVISION. 000040 PROGRAM-ID. SUB-PREP. : 001000 EXEC SQL PREPARE :cmd1 FROM :strsql END-EXEC. (1) :(1)ホスト変数cmd1を使用して拡張SQL文識別子を定義します。
sub_alloc_cur.scob
000030 IDENTIFICATION DIVISION. 000040 PROGRAM-ID. SUB-ALLOC. : 001000 EXEC SQL ALLOCATE :cur1 CURSOR FOR :cmd1 END-EXEC. (1) :(1)拡張カーソル名cur1と拡張SQL文識別子cmd1を使用して拡張カーソルを宣言します。
sub_open.scob
000030 IDENTIFICATION DIVISION. 000040 PROGRAM-ID. SUB-OPEN. : 001000 EXEC SQL OPEN :cur1 END-EXEC. (1) :(1)拡張カーソルcur1をオープンします。
目次 索引 |