RELEASE (接続)

RELEASE ステートメントは、1 つ以上の接続を解放ペンディング状態にします。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことと、 対話式に呼び出すことだけが可能です。これは実行可能ステートメントですが、動的に準備することはできません。Java™ および REXX では指定できません。

RELEASE は、トリガーおよび関数で使用できません。

権限

ステートメントでグローバル変数を参照する場合は、ステートメントの権限 ID が保持する特権に、少なくとも次のいずれか 1 つが含まれなければなりません。

  • ステートメント内で識別されるグローバル変数に対して、
    • そのグローバル変数に対する READ 特権
    • グローバル変数が含まれるスキーマに対する USAGE 特権
  • データベース管理者権限

構文

構文図を読む構文図をスキップする
>>-RELEASE--+-server-name--+-----------------------------------><
            +-variable-----+   
            +-CURRENT------+   
            |      .-SQL-. |   
            '-ALL--+-----+-'   

説明

server-name または variable
指定したサーバー名、または指定した変数に入っているサーバー名によって接続を識別します。 スキーマ名で修飾すれば、グローバル変数を使用することもできます。 変数を指定する場合
  • その変数は、文字ストリング変数でなければなりません。
  • 標識変数を伴っていてはなりません。
  • サーバー名は、その変数内で左寄せし、通常 ID の形成の規則に従っていなければなりません。
  • サーバー名の長さが、変数の長さよりも短い場合、右側をブランクで埋めなければなりません。

RELEASE ステートメントが実行される時点で、指定したサーバー名、または指定の変数に入っているサーバー名は、 活動化グループの既存の接続を識別していなければなりません。

CURRENT
活動化グループの現行接続を識別します。活動化グループは接続状態でなければなりません。
ALL または ALL SQL
活動化グループの既存のすべての接続 (ローカルおよびリモートの接続の両方) を識別します。

このステートメントの実行時に接続が存在しない場合、エラーや警告は起こりません。

ALL という名前のアプリケーション・サーバーを指定する場合は、変数または区切り ID しか使用できません。

RELEASE ステートメントが正常に実行された場合は、識別されている各接続は解除保留状態になり、 したがって、次のコミット操作中に終了することになります。RELEASE ステートメントが不成功の場合には、 その活動化グループの接続状態およびその接続の状態は変わりません。

RELEASE と CONNECT (タイプ 1): CONNECT (タイプ 1) の使用は、RELEASE の使用を妨げることはありません。

RELEASE の有効範囲: RELEASE は、カーソルをクローズしません。 また、どのようなリソースも解放しません。さらに、該当の接続をさらに使用するのを妨げることはありません。

リモート接続のリソースに関する考慮事項: リモート接続を作成し維持するためには、リソースが必要です。したがって、再使用の予定がないリモート接続は、解除保留状態にする必要があり、再使用の予定があるリモート接続は、 解除保留状態にしてはなりません。

接続状態: ROLLBACK は、接続を解除保留状態から保留状態にリセットすることはしません。

コミット操作が行われる時点で現行接続が解除保留状態にある場合は、その接続は終了し、 その活動化グループは未接続状態になります。この場合は、次に実行される SQL ステートメントは、 CONNECT または SET CONNECTION であることが必要です。

RELEASE ALL は、ローカルの解除保留への接続を解除保留状態にします。 解除保留状態の接続は、WITH HOLD 文節を指定して 定義したオープン・カーソルを持つ場合でも、コミット操作中に終了します 。

例 1 : 次の作業単位では、TOROLAB1 との接続は必要としません。 次のステートメントは、次のコミット操作の過程で既存の接続を終了させます。

   EXEC SQL RELEASE TOROLAB1;

例 2 : 次の作業単位では、現行接続は必要としません。 次のステートメントは、次のコミット操作の過程で既存の接続を終了させます。

   EXEC SQL RELEASE CURRENT;

例 3 : 次の作業単位では、既存の接続はいずれも必要としません。 次のステートメントは、次のコミット操作の過程で既存の接続を終了させます。

   EXEC SQL RELEASE ALL;