OpenESQL アシスタント

ここでは、OpenESQL アシスタントの使用と構成について説明します。

概要

OpenESQL アシスタントは、次の作業を簡単に行うための対話型ツールです。

OpenESQL アシスタントオプションの設定方法

OpenESQL アシスタントを使用して SQL クエリーを作成する前に、OpenESQL アシスタントの動作を決定するオプションと SQL の生成方法を指定します。これらは、「OpenESQL アシスタント構成オプション」ダイアログボックスで行います。このダイアログボックスでは、次の設定ができます。

OpenESQL アシスタントの使用方法

OpenESQL アシスタントを使用すると、SQL クエリーを簡単に設計および作成でき、COBOL コードに SQL クエリーを埋め込めます。クエリーを指定すると、OpenESQL アシスタントは必要なコードを生成します。それらをプログラム内に埋め込む前に、適切な結果の作成を確認するためにクエリーをテストすることもできます。また、COBOL 内のクエリーをサポートするために必要な補助コードを生成または埋め込むことができます。

OpenESQL アシスタントの起動方法

Net Express を起動したときに、OpenESQL アシスタントのドッキング可能なウィンドウを表示するように構成できます。また、必要なときに OpenESQL アシスタントを簡単に起動できます。

OpenESQL の構成によっては、ユーザ名とパスワードを入力する必要があります。

データソースへの接続方法

OpenESQL アシスタントで SQL を作成する前に、アクセスしたいデータを含むデータソースへ接続する必要があります。ワークステーション上のカタログされたすべてのデータソースは、OpenESQLアシスタントのツリービューに一覧表示されます。一度に接続できるデータソースは 1 つです。接続した後は、データソース内のすべてのデータ名はツリービューに表示されます。

一度データソースへ接続すると、データソースのプロパティを参照できます。「データソースのプロパティ」ダイアログボックスには、次の情報が含まれます。

これらの情報は、データソースでサポートされるテーブルとカラムを確認できます。テーブルまたはカラムの長さ 0 は、表示されません。たとえば、検索条件を設定する場合に、長さ 0 のテーブルまたはカラムを指定できません。

クエリーのビルド方法

OpenESQL を使用してクエリーをビルドする方法は、次の複数の手順を実行します。

以後では、これらの手順について説明します。

テーブルおよびクエリーの型の選択方法

1 回の操作で 1 つのテーブルを選択できます。または、データソース内のすべてのテーブルを選択できます。「生成するクエリーのタイプを選択」ダイアログボックスでテーブル上で実行したいクエリーの型を選択します。このダイアログボックスには、選択したテーブル上で実行できるクエリーの型が一覧表示されます。選択するクエリーの型によっては、デフォルトのカーソル名も変更できます。また、クエリーをストアドプロシージャとして生成し、ストアドプロシージャ (stored procedure; SP) 名も指定できます。

選択されたテーブルは、テーブルアイコン にチェックマークが付いて、ツリービューに表示されます。

クエリーを選択する場合は、選択したクエリーに対する COBOL コードが自動生成され、[クエリー] タブの下部に表示されます。同時に、テーブル名の下部にテーブルの全カラムが一覧表示されます。

SELECT クエリーを選択すると、OpenESQL アシスタントによりテーブルの別名が自動生成されています。次に例を示します。

SELECT FROM Customer A

最初に選択したテーブルは、別名には「A」の文字が使用されています。2 番目に選択するテーブルについては、OpenESQL アシスタント は「B」の文字を使用して別名を生成します。その後は同様に、テーブルの選択順に対応したアルファベットを使用して別名を生成します。

各カラム名の前にも、別名 (A.CustID、A.Company など) が付きます。この別名により、テーブル内のカラムを他のテーブル内のカラムと区別できます。

一部のデータベースでは、システムテーブルの名前に特殊文字が使用されます。たとえば、Oracle では、システムテーブル名にドル記号 ($) が使用されることがあります。OpenESQL アシスタントは、システムテーブルの名前に生成されたテーブル名を規約違反にするような特殊文字を検出すると、自動的にカラム名やテーブル名を引用符で囲みます。

カラム名から生成された名前 (接頭語と接尾語を含む) の文字数が 31 文字を超えたり、名前に規約違反な文字が含まれたりするために COBOL で規約違反になった場合は、OpenESQL はカラム名ではなく、カラム番号 (COL005 など) を使用してホスト変数を生成します。

カラムの選択

テーブルおよびクエリーの型を選択すると、クエリーを処理する 1 つ以上のカラムを選択できます。

選択されたカラムは、カラムアイコン にチェックマークが付いて、ツリービューに表示されます。

カラム用の集約関数の指定方法

SELECT (カーソル) または SELECT DISTINCT (カーソル) クエリーのどのカラムでも集約関数を指定できます。集約関数は、カラムから返されるデータの特定な情報を取得します。

OpenESQL は、返されるデータの各グループに対して、次の情報を返します。

集約関数 返されるデータの各グループに対する値
SUM すべての値の合計が返されます (数字カラムのみ)
AVG すべての値の平均が返されます (数字カラムのみ)
MAX 最大値が返されます
MIN 最小値が返されます
COUNT レコード数が返されます

検索条件の指定方法

OpenESQL アシスタントの [検索条件] タブで検索条件を指定する場合は、クエリーで返される行を制限できます。OpenESQL アシスタントは、指定する条件に基づいた WHERE 句を生成します。

取り出すデータのソート方法

OpenESQL アシスタントの [ソート] タブでソートするカラムを指定して、クエリーから返される行の順序を決定できます。OpenESQL アシスタントは、指定する順序に基づいた ORDER BY 句を生成します。

結合テーブルの作成方法

複数のテーブル間に共通するカラムが 1 つでもあれば、これらのテーブルを結合させ、複数のテーブルから同時に情報を検索できます。OpenESQL アシスタントは、最初に一致するカラムを使用して結合テーブルを作成します。一致するカラムが見つからない場合は、自動的に結合は生成されません。この場合は、検索条件機能を使用して結合を指定できます。

この機能は、SELECT クエリーのみで使用可能です。

クエリーでの作業

ここでは、いくつかの OpenESQL アシスタントの機能とクエリーの作成を拡張する推奨処理を説明します。

カラムの詳細の表示方法

OpenESQL アシスタントの [詳細] タブは、テーブルに含まれるカラムの詳細情報を表示します。[詳細] タブには、選択されたテーブルの次に示すカラムの内容が表示されます。

データソースからの接続解除方法

データソースから接続を解除すると、OpenESQL は現在のクエリーを破棄します。他のデータソースへ接続する前に、現在のデータソースの接続を解除する必要があります。

クエリーの終了

クエリーを終了すると、OpenESQL は生成されたコードは破棄され、新規クエリーを作成できます。

SELECT クエリーからテーブルの削除

OpenESQL アシスタントで作成されるほとんどのクエリーは、1 つのテーブルのみにアクセスします。クエリーからテーブルを削除すると、OpenESQL はクエリーを閉じて、作成されたコードは失われます。ただし、1 つ以上のテーブルを結合する SELECT クエリーを作成した場合は、クエリーを閉じずに安全にテーブルを削除できます。SELECT クエリーからテーブルの削除を行うと、削除を確認するダイアログが表示されます。確認後に、OpenESQL はクエリーからテーブルに関係する生成されたコードを削除します。また、テーブルに属するカラムに関係するすべてのコードも削除されます。

SELECT (カーソル) クエリーの変更による配列取り込みの実行方法

OpenESQL アシスタントでは、配列取り込みのためのコードは直接生成されません。ただし、OpenESQL アシスタントで生成された SELECT (カーソル) コードを変更し、配列取り込みを処理できます。

SQL クエリーのテスト方法

プログラムコードで動作させる前に、OpenESQL アシスタントでクエリーをテストできます。これを行うには、OpenESQL アシスタントからクエリーを実行します。すべての SELECT 文の結果は、[実行結果] タブに自動的に表示されます。他のクエリーの型は、メッセージボックスに次に示す情報が表示されます。

クエリーが正しく実行されるために、追加の指定が必要になる場合があります。OpenESQL アシスタントがコードを実行できない場合は、正しくするように求められます。

注:OpenESQL アシスタントでクエリーを実行すると、データベースに対して UPDATE 文、INSERT 文、および DELETE 文が実行され、内容が変更されます。

プログラムへの埋め込み SQL の追加方法

作成した SQL クエリーに問題がない場合には、COBOL プログラムに追加できます。

補助コード

OpenESQL で生成された SQL クエリーは、COBOL プログラムから正しく実行されるために、クエリーを除く追加のコードが必要になる場合があります。たとえば、DB2 UDB でデータベースへアクセスする SQL クエリーを正常に実行するには、データソースへ接続する CONNECT 文を挿入する必要があります。クエリーを埋め込むと、OpenESQL アシスタントで補助コードを生成して埋め込めます。

EXEC SQL 補助コードの生成方法

OpenESQL アシスタントは、次に示す EXEC SQL 補助コードを生成できます。

補助コードの埋め込み方法

SQL クエリーを埋め込む方法と同じように、補助コードを埋め込みます。

ストアドプロシージャ

ここでは、ストアドプロシージャの生成方法とOpenESQL アシスタントを使用してストアドプロシージャをテストする方法を説明します。

注:ストアドプロシージャ内には複数のタイプの SQL 文を記述できます。OpenESQL アシスタントでは、複数のタイプの SQL 文をもつストアドプロシージャを生成できません。そのため、これを行うには、Microsoft が提供しているツールなどを使用します。

OpenESQL アシスタントは、簡単なストアドプロシージャと、これらのストアドプロシージャを呼び出すために必要な COBOL コードの生成方法をすばやく理解するために提供されています。

ストアドプロシージャクエリーの生成方法

Microsoft は、ストアドプロシージャを作成、編集、およびテストするツールを提供しています。プログラマは、COBOL クライアントプログラムからこれらのストアドプロシージャを呼び出すコードを生成する必要があります。OpenESQL アシスタントは、このプロセスをより簡単に行えます。

Microsoft SQL Server データソースを使用している場合は、OpenESQL アシスタントで、クエリーをストアドプロシージャとして生成するオプションを使用できます。このオプションを使用すると、ストアドプロシージャおよび、そのプロシージャを呼び出すクライアントコードを作成する 2 つの SQL 文を生成します。

OpenESQL アシスタントでは、ストアドプロシージャを削除し、作成する 2 つの SQL 文を生成します。これらの SQL 文は 1 回のみ実行する必要があるため、通常はサーバプログラムに記述されます。

OpenESQL アシスタントでは、クライアントプログラムに記述するコードも生成し、ストアドプロシージャを呼び出します。選択するクエリーの型によっては、ストアドプロシージャを呼び出す DECLARE CURSOR 文や SQL CALL 文のみを生成することがあります。

ストアドプロシージャクエリーのテスト方法

ストアドプロシージャクエリーを作成した後に、他のクエリーをテストした方法と同じように、ストアドプロシージャクエリーをテストできます。ただし、OpenESQL アシスタントでは、ストアドプロシージャ用に複数の SQL 文が作成されるので、複数回クエリーを実行する必要があります。クエリーが実行されるたびに、次の SQL 文が実行されます。

クエリーを最初に実行するときに、DROP PROCEDURE 文が実行され、次のメッセージが表示されます。

ストアドプロシージャ 'spname' が存在していないため削除できません。

このメッセージは意図的なものであり、DROP PROCEDURE を複数回実行すると、異なるメッセージが表示されます。

次にクエリーを実行すると、CREATE PROCEDURE 文が実行されます。文の実行が成功したことを示すメッセージが表示されます。

定数値が必要な検索条件をもつストアドプロシージャの CALL 文を実行する場合は、定数値を入力するよう求められます。

すべての SQL 文が実行されると、[実行結果] タブに結果が表示されます。

正しい結果になるまで、この処理を繰り返します。

プログラムへのストアドプロシージャの埋め込み方法

この方法は、プログラムへ標準的な SQL クエリーを埋め込む方法と似ています。

OpenESQL アシスタントでは、クライアントプログラムとサーバプログラムの両方に文が生成されます。不要な文は削除できます。プログラムがクライアントプログラムである場合は、DROP PROCEDURE 文と CREATE PROCEDURE 文は必要ありません。

注:前述の方法でクエリーをテストする場合は、ストアドプロシージャがすでに作成されているため、DROP PROCEDURE 文または CREATE PROCEDURE 文を実行する必要はありません。ストアドプロシージャがまだ作成されていない場合は、SQL COMMIT 文または SQL(AUTOCOMMIT) 指令を、CREATE PROCEDURE を実行するプログラムに追加します。この方法を実行しないと、ストアドプロシージャはデータソースに保存されません。