SET CONNECTION ステートメント
SET CONNECTION ステートメントは、プロセスの既存の接続の 1 つを 指定することにより、そのデータベース・サーバーを確立します。
呼びかけ SET CONNECTION
このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、動的に作成できない実行可能ステートメントです。 Java™では指定できません。
承認 SET CONNECTION
不要です。
構文 SET CONNECTION
説明の対象: SET CONNECTION
- ロケーション名またはホスト変数
- ロケーション名を指定するか、またはホスト変数に含まれているロケーション名を
使うことによって、SQL 接続を指定します。 ホスト変数を指定する場合は、以下の規則に従ってください。
- 長さ属性が 16 以下の文字ストリング変数とします。 (C の NUL 終了文字ストリングの場合は 17 バイトまで可。)
- 後ろに標識変数を置いてはなりません。
- ロケーション名は、ホスト変数の中で左揃えにしなければなりません。また、通常のロケーション ID を作成する際の規則に従わなければなりません。
- ロケーション名の長さがホスト変数の長さより短い場合には、その右側に ブランクを埋め込まなければなりません。
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
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 ステートメントでそれが現行の状態に戻ります。
