DISCONNECT
DISCONNECT ステートメントは、無保護会話の 1 つ以上の接続を終了させます。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、または対話式に呼び出すことができます。 これは実行可能ステートメントですが、動的に準備することはできません。Java™ および REXX では指定できません。
DISCONNECT は、トリガーおよび関数で使用できません。
権限
ステートメントでグローバル変数を参照する場合は、ステートメントの権限 ID が保持する特権に、少なくとも次のいずれか 1 つが含まれなければなりません。
- ステートメント内で識別されるグローバル変数に対して、
- そのグローバル変数に対する READ 特権
- そのグローバル変数を含むライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
構文
>>-DISCONNECT--+-server-name--+-------------------------------->< +-variable-----+ +-CURRENT------+ | .-SQL-. | '-ALL--+-----+-'
説明
- server-name または variable
- 指定したサーバー名、または指定した変数に入っているサーバー名によってアプリケーション・サーバーを識別します。スキーマ名で修飾すれば、グローバル変数を使用することもできます。変数を指定する場合
- その変数は、文字ストリング変数でなければなりません。
- 標識変数を伴っていてはなりません。
- サーバー名は、その変数内で左寄せし、通常 ID の形成の規則に従っていなければなりません。
- サーバー名の長さが、変数の長さよりも短い場合、右側をブランクで埋めなければなりません。
DISCONNECT ステートメントが実行される時点で、指定したサーバー名または変数に入っているサーバー名は、 その活動化グループの既存の休止接続、または現行接続を識別していなければなりません。 識別された接続は、保護会話を使用できません。
- CURRENT
- 活動化グループの現行接続を識別します。活動化グループは接続状態でなければなりません。 その現行接続は、保護会話を使用してはなりません。
- ALL または ALL SQL
- 活動化グループの既存のすべての接続 (ローカルおよびリモートの接続の両方) を識別します。 このステートメントの実行時に接続が存在しない場合、エラーや警告は起こりません。 接続は、いずれも保護会話を使用することはできません。
注
DISCONNECT と CONNECT (タイプ 1): CONNECT (タイプ 1) の使用は、 DISCONNECT の使用を妨げることはありません。
接続制限: 識別される接続は、 現行作業単位の過程で SQL ステートメントを実行するのに使用された接続であってはならず、 また保護会話の接続であってはなりません。 保護会話の接続を終了するには、RELEASE ステートメントを使用します。 ローカル接続は、保護会話と見なされることはありません。
DISCONNECT ステートメントは、コミット操作の直後に実行しなければなりません。 DISCONNECT が現行接続の終了に使用される場合、次に実行される SQL ステートメントは、 CONNECT または SET CONNECTION でなければなりません。
ROLLBACK は、DISCONNECT によって終了した接続を再接続することはありません。
切断成功: DISCONNECT ステートメントが正常に実行された場合は、 識別された接続はそれぞれ終了します。 現行接続が遮断されると、その活動化グループは未接続状態になります。
DISCONNECT は、カーソルをクローズし、リソースを解放し、その接続のそれ以上の使用を防止します。
DISCONNECT ALL は、ローカル・アプリケーション・サーバーとの接続を終了させます。接続に、WITH HOLD 文節を指定して定義されたオープン・カーソルがある場合でも、接続は終了します。
接続失敗: DISCONNECT ステートメントが正常に実行 されなかった場合は、その活動化グループの接続状態、およびその 接続の状態は変わりません。
リモート接続のリソースに関する考慮事項: リモート接続を作成し維持するためには、リソースが必要です。したがって、再使用の予定がないリモート接続は、できるだけ早く終了するようにする必要があり、 再使用の予定があるリモート接続は、遮断されないようにする必要があります。
例
例 1 : TOROLAB1 との接続は不要になりました。 次のステートメントは、コミット操作の後で実行されます。
EXEC SQL DISCONNECT TOROLAB1;
例 2 : 現行接続は不要になりました。 次のステートメントは、コミット操作の後で実行されます。
EXEC SQL DISCONNECT CURRENT;
例 3 : 既存の接続は不要になりました。 次のステートメントは、コミット操作の後で実行されます。
EXEC SQL DISCONNECT ALL;