SET CONNECTION ステートメント

SET CONNECTION ステートメントは、 接続の状態を休止状態から現行状態に変更して、 指定された位置を現行サーバーにします。

このステートメントは、トランザクションの制御下にありません。

呼び出し

対話式 SQL 機能には外見上対話式の実行に見えるインターフェースが用意されている場合がありますが、 このステートメントはアプリケーション・プログラムに組み込むことだけが可能です。 これは、動的に作成できない実行可能ステートメントです。

許可

必要ありません。

構文

構文図を読む構文図をスキップするSET CONNECTION server-namehost-variable

説明

server-name または host-variable
server-name (サーバー名) またはその server-name を含む host-variable (ホスト変数) によって、 アプリケーション・サーバーを指定します。

host-variable (ホスト変数) を指定する場合、 それは、長さ属性が 8 以下の文字ストリング変数でなければならず、 標識変数を含めることはできません。 その host-variable に入る server-name は、左揃えにする必要があり、引用符で区切ることはできません。

server-name は、 アプリケーション・サーバーを指定するデータベース別名である点に注意してください。 この名前は、アプリケーション・リクエスターの ローカル・ディレクトリーにリストされている必要があります。

server-name または host-variable は、 アプリケーション・プロセスの既存の接続を指定していなければなりません。 既存の接続を指定していない場合には、エラー (SQLSTATE 08003) になります。

現行接続に対する SET CONNECTION の場合、 アプリケーション・プロセスのすべての接続の状態は変更されません。

正常に接続された場合
SET CONNECTION ステートメントが正常に実行された場合、
  • 作成される接続はありません。 CURRENT SERVER 特殊レジスターは、指定した server-name で更新されます。
  • それ以前の現行接続がある場合、 それは休止状態になります (別の server-name を指定した場合)。
  • CURRENT SERVER 特殊レジスターと SQLCA は、 『CONNECT (タイプ 1)』で説明した方法と同じ方法で更新されます。
正常に接続されなかった場合
SET CONNECTION ステートメントが失敗した場合、
  • エラーの理由に関係なく、 アプリケーション・プロセスの接続状態とその接続の状態は変更されません。
  • エラーになったタイプ 1 の CONNECT の場合と同様に、 SQLCA の SQLERRP フィールドは、エラーを検出したモジュール名に設定されます。

  • タイプ 1 CONNECT ステートメントの使用は、 SET CONNECTION の使用を排除するわけではありませんが、 休止状態の接続は存在し得ないので、 SET CONNECTION ステートメントに現行接続を指定するのでない限り、 このステートメントは常にエラーになります (SQLSTATE 08003)。
  • SQLRULES(DB2) 接続オプション (『分散作業単位のセマンティクスを制御するオプション』を参照) を使用した場合、SET CONNECTION の使用を排除するわけではありませんが、タイプ 2 CONNECT ステートメントを使用できるので、このステートメントは不要です。
  • 同じ作業単位で接続が使用され、休止状態になり、次に現行状態にリストアすると、 ロック、カーソル、および準備済みステートメントの状況に関して、 その接続はアプリケーション・プロセスでの最後の使用を反映したものになります。

IBMSTHDB で SQL ステートメントを実行し、 次に IBMTOKDB で SQL ステートメントを実行し、 その後、IBMSTHDB で SQL ステートメントを実行します。
   EXEC SQL CONNECT TO IBMSTHDB;
   /* Execute statements referencing objects at IBMSTHDB */
   EXEC SQL CONNECT TO IBMTOKDB;
   /* Execute statements referencing objects at IBMTOKDB */
   EXEC SQL SET CONNECTION IBMSTHDB;
   /* Execute statements referencing objects at IBMSTHDB */

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