SET CONNECTION ステートメント

SET CONNECTION ステートメントは、プロセスの既存の接続の 1 つを 指定することにより、そのデータベース・サーバーを確立します。

呼びかけ SET CONNECTION

このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、動的に作成できない実行可能ステートメントです。 Java™では指定できません。

承認 SET CONNECTION

不要です。

構文 SET CONNECTION

構文図を読むビジュアルシンタックスダイアグラムをスキップするSET CONNECTION location-namehost-variable

説明の対象: SET CONNECTION

ロケーション名またはホスト変数
ロケーション名を指定するか、またはホスト変数に含まれているロケーション名を 使うことによって、SQL 接続を指定します。 ホスト変数を指定する場合は、以下の規則に従ってください。
  • 長さ属性が 16 以下の文字ストリング変数とします。 (C の NUL 終了文字ストリングの場合は 17 バイトまで可。)
  • 後ろに標識変数を置いてはなりません。
  • ロケーション名は、ホスト変数の中で左揃えにしなければなりません。また、通常のロケーション ID を作成する際の規則に従わなければなりません。
  • ロケーション名の長さがホスト変数の長さより短い場合には、その右側に ブランクを埋め込まなければなりません。
S が、指定されたロケーション名、またはホスト変数に含まれているロケーション名を示すものとします。 S は、アプリケーション・プロセスの既存の SQL 接続を示すものでなければなりません。 S が現行の SQL 接続を示す場合、S の状態およびアプリケーション・プロセスの その他すべての接続に変化はありません。 S が示す SQL 接続が休止状態の場合は、以下の規則が適用されます。

SET CONNECTION ステートメントが成功した場合:

  • SQL 接続 S が現行状態に入ります。
  • S が CURRENT SERVER 特殊レジスターに入ります。
  • サーバー S に関する情報が、SQLCA の SQLERRP フィールドに入ります。 サーバーが IBM® 製品の場合、情報は pppvvrrm という形式になります。
    プロダクト ID (PRDID) 値は、pppvvrrm 形式の 8 バイト文字の値です。ここで、ppp は 3 文字のプロダクト・コード、vv はバージョン、rr はリリース、m はモディフィケーション・レベルです。 Db2 12 for z/OS® では、修正レベルは機能レベルの範囲を示します。
    • DSN12015V12R1M500 以上。
    • DSN12010V12R1M100 用。
    変更の開始詳細は、 Db2 for z/OS の「Product identifier (PRDID) values」 をご覧ください。変更の終わり
  • それまで現行 SQL 接続であったものは、休止状態に入ります。

SET CONNECTION ステートメントが失敗した場合、アプリケーション・プロセス の接続状態およびその SQL 接続の状態に変化はありません。

注釈 SET CONNECTION

CONNECT (タイプ 1) の後の SET CONNECTION : CONNECT (タイプ 1) ステートメントの使用は SET CONNECTION の使用を妨げることはありませんが、休止状態の SQL 接続は存在しないので、そのステートメントは失敗するか何も行わないかのどちらかです。 SQLRULES(DB2) バインド・オプションを使った場合に、SET CONNECTION が使用できなくなることはありませんが、代わりに CONNECT (タイプ 2) ステートメントを 使用できるので、このステートメントは必要ありません。 SET CONNECTION ステートメントを使用すると、SQL 標準に 準拠することになります。

ロック、カーソル、およ び準備済みステートメントの状況: 1 つの作業単位内で、SQL 接続を使用し、休止状態にしてから、現行状態にリストアする場合、その SQL 接続のロック、カーソル、およ び準備済みステートメントの状況には、アプリケーション・プロセスがそれを最後に使用したときの状況が反映されます。

ホスト変数: SET CONNECTION ステートメントにホスト変数が含まれている場合、ホスト変数の内容は、ステートメントを含むパッケージまたはプランのバインド時に ENCODING パラメーターに指定されたコード化スキームであると見なされます。

配列タイプおよび配列変数の制約事項: CALL ステートメント以外の SQL ステートメントでは、リモート・サーバーでの接続の確立後に、配列タイプおよび配列変数を参照することはできません。 この制約事項には、リモート・サーバーでオブジェクトに解決する 3 部構成の名前または別名の結果として、リモート・サーバーで実行する SQL ステートメントが含まれます。 例外として、配列エレメントを SQL ルーチン内の FETCH、SELECT INTO、SET assignment-statement、または VALUES INTO ステートメントのターゲットにすることは、ステートメントがリモート・サーバーで実行される場合であっても可能です。

例) SET CONNECTION

TOROLAB1 で SQL ステートメントを実行し、TOROLAB2 で SQL ステートメント を実行してから、TOROLAB1 でさらに SQL ステートメントを実行します。
  EXEC SQL CONNECT TO TOROLAB1;
 
    -- execute statements referencing objects at TOROLAB1
 
  EXEC SQL CONNECT TO TOROLAB2;
 
    -- execute statements referencing objects at TOROLAB2
 
  EXEC SQL SET CONNECTION TOROLAB1;
 
    -- execute statements referencing objects at TOROLAB1

最初の CONNECT ステートメントで TOROLAB1 接続が作成され 、2 番目の CONNECT ステートメントでそれが休止状態に入り 、SET CONNECTION ステートメントでそれが現行の状態に戻ります。