システム関数
VGLib.connectionService には、以下の 2 つの利点があります。
- プログラム実行時にデータベースへの接続または切断を可能にします。
- データベースのプロダクト名とリリース・レベルを受け取ります (オプショ
ン)。受け取った情報を case、if、
または while 文で使用して、
実行時処理がデータベースの特性に依存して実行されるようにできます。
VGLib.connectionService を使用して Java™ プログラムから新規接続を作成する場合、システム変数 VGVar.sqlIsolationLevel を設定することによって分離レベルを指定します。
VGLib.connectionService は、VisualAge® Generator および EGL 5.0 からマイグレーションされたプログラム専用です。
関数は、(開発時に) EGL 設定 VisualAge Generator
との互換性 が選択されている場合、または (生成時に) ビルド記述子オプション VAGCompatibility が yes に選択されている場合にサポートされます。
新規プログラムの場合、代わりに以下のシステム関数を使用します。
VGLib.connectionService は値を戻しません。
VGLib.connectionService(
userID CHAR(8) in,
password CHAR(8) in,
serverName CHAR(18) in
[, product CHAR(8) inOut,
release CHAR(8) inOut
[, connectionOption STRING in
]])
- userID
- データベースへアクセスするときに使用されるユーザー ID。CHAR 型で長さが 8 の項目を引数として使用する必要があります。リテラルは無効です。引数を指定する必要があります。背景情報については、『データベースの権限とテーブル名』を参照してください。
- password
- データベースへアクセスするときに使用されるパスワード。CHAR 型で長さが 8 の項目を引数として使用する必要があります。リテラルは無効です。引数を指定する必要があります。
- serverName
- 接続を指定し、引数 product と release が VGLib.connectionService の呼び出しに含まれている場合には、指定した接続を使用してこれらの引数に値を代入します。
CHAR 型で長さが 18 の項目を引数
serverName として使用する必要があります。有効な値を以下に示します。
- ブランク (内容なし)
- 接続が残っている場合、VGLib.connectionService はその接続を維持します。
接続が残っていない場合には、実行単位の開始時に有効な接続状況へ、結果 (値代入以外の
結果) が戻されます。詳細については、『デフォ
ルト・データベース』を参照してください。
- RESET
- RESET を指定すると、デフォルト・データベースに再接続しま
す。ただしデフォルト・データベースが使用できない場合には、接続状況は変更されません。
詳細については、『デフォルト・データベース』を参照してください。
- serverName
- データベースを識別します。
- 物理データベース名を検出するには、プロパティー vgj.jdbc.database.server (server は VGLib.connectionService 呼び出しで指定した名前) を検索します。
このプロパティーが定義されていない場合は、VGLib.connectionService 呼び出しで指定したサーバー名がそのまま使用されます。
- J2EE 接続と非 J2EE 接続ではデータベース名の形式が異なります。
- J2EE 環境で実行されるプログラムを生成した場合には、JNDI レジストリーでのデータ・ソースのバインド先となる名前 (jdbc/MyDB など) を使用します。
ビルド記述子オプション J2EE が YES に設定
されている場合に、この状態が発生します。
- 非 J2EE JDBC 環境のためのプログラムを生成した場合
には、接続 URL (jdbc:db2:MyDB など) を使用します。オプション J2EE が NO に設定
されている場合に、この状態が発生します。
- product
- データベースのプロダクト名を受け取ります。引数を指定する場合には、CHAR 型で長さが 8 の項目を引数として使用する必要があります。
コードで特定のデータベースへ接続するときに受け取るストリングを確認するには、データベースまたはドライバーの製品資料を参照するか、またはテスト環境でコードを実行し、受け取る値
をファイルへ書き込んでください。
- release
- データベースのリリース・レベルを受け取ります。引数を指定する場合には、CHAR 型で長さが 8 の項目を引数として使用する必要があります。
コードで特定のデータベースへ接続するときに受け取るストリングを確認するには、データベースまたはドライバーの製品資料を参照するか、またはテスト環境でコードを実行し、受け取る値
をファイルへ書き込んでください。
- connectionOption
- 有効な値は以下のとおりです。
- D1E
- デフォルトは、「D1E」です。オプション名の 1 は、
シングル・フェーズ・コミットがサポートされていることを示し、
E は、切断が明示的でなければならないことを示します。
この場合、コミットまたはロールバックは既存の接続で有効ではありません。
データベースへ接続しても、カーソルの終了、ロックの解放、既存の接続の終了は行われません。ただし、実行単位が既に同一データベースへ接続している場合には、D1E を指定すると、DISC
を指定してから D1E を指定した場合と同様の効果が得られます。
複数のデータベースから読み込むために複数の接続を使用している場合には、作業単位
では 1 つのデータベースのみを更新する必要があります。これは、シングル・フェーズ・コミ
ットのみが実行可能であるためです。
- D1A
-
オプション名の
1 は、
シングル・フェーズ・コミットがサポートされていることを示し、
A は、切断が
自動的であることを示します。
このオプションの特性は、以下のとおりです。
- 1 度に 1 つのデータベースにしか接続できない
- データベースへのコミット、ロールバック、または接続によって、既存の接続が終了する
- DISC
- 指定されているデータベースから切断します。データベースから切断すると、このデータベースについてのみロールバックが実行され、ロックが解放されます。
- DCURRENT
- 現在接続されているデータベースから切断します。データベースから切断すると、このデータベースについてのみロールバックが実行され、ロックが解放されます。
- DALL
- すべてのデータベースから切断します。すべてのデータベースから切断すると、これらのデータベースでロールバックが実行されます。ただし、他のリカバリー可能リソースではロールバックは実行されません。
- SET
- 接続を現行接続に設定します。(デフォルトでは、実行単位内の最新の接続が現行接続になります。)
VisualAge Generator との互換性を維持するため、値 R、D1C、D2A、
D2C、D2E がサポートされています。ただしこれらの値は D1E と同等です。