SQL 解説書

CONNECT (タイプ 1)

CONNECT (タイプ 1) ステートメントは、リモート作業単位の規則に従って、 指定したアプリケーション・サーバーにアプリケーション・プロセスを接続します。

1 つのアプリケーション・プロセスは、 一時点で 1 つのアプリケーション・サーバーにのみ接続できます。 これは、現行サーバー と呼ばれます。 デフォルトのアプリケーション・サーバーは、 アプリケーション・リクエスターの初期設定時に確立されます。 暗黙接続が使用可能な場合にアプリケーション・プロセスが開始されると、 暗黙にデフォルトのそのアプリケーション・プロセスに接続されます。 そのアプリケーション・プロセスで CONNECT TO ステートメントを使用することによって、 それとは別のアプリケーション・サーバーに明示的に接続することもできます。 接続は、CONNECT RESET ステートメント、または DISCONNECT が出されるまで、 あるいは別の CONNECT TO ステートメントによってアプリケーション・サーバーが変更されるまで継続します。

接続状態の概念と詳細については、リモート作業単位の接続管理 を参照してください。 CONNECT の機能の枠組みを決めるプリコンパイラー・オプションについては、 分散作業単位の意味を制御するオプション を参照してください。

呼び出し

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

許可

このステートメントの許可 ID には、 指定されたアプリケーション・サーバーに接続するための許可が必要です。 データベースの認証の設定値によっては、 クライアントまたはサーバーのいずれかによって許可検査が行われる場合があります。 区分データベースの場合、ユーザーとグループの定義は、 区分またはノードのすべてにわたって同一である必要があります。 認証設定値については、 管理の手引き の AUTHENTICATION データベース・マネージャー構成パラメーターの項を参照してください。

構文

>>-CONNECT------------------------------------------------------>
 
>-----+------------------------------------------------------------------------+>
      +-TO--+-server-name---+---+------------------+---+---------------------+-+
      |     '-host-variable-'   '-|  lock-block |--'   '-|  authorization |--' |
      +-RESET------------------------------------------------------------------+
      |                    (1)                                                 |
      '-|  authorization |-----------------------------------------------------'
 
>--------------------------------------------------------------><
 
 authorization
 
|---USER----+-authorization-name-+--USING----+-password------+-->
            '-host-variable------'           '-host-variable-'
 
>-----+---------------------------------------------+-----------|
      '-NEW--+-password------+---CONFIRM--password--'
             '-host-variable-'
 
 lock-block
 
    .-IN SHARE MODE--------------------------.
|---+----------------------------------------+------------------|
    '-IN EXCLUSIVE MODE--+----------------+--'
                         '-ON SINGLE NODE-'
 

注:

  1. この形式は、暗黙の接続が使用可能な場合にのみ有効です。

説明

CONNECT (オペランドなし)
現行サーバーに関する情報を戻します。 この情報は、「正常に接続された場合」の項に説明されているとおり、 SQLCA の SQLERRP フィールドに戻されます。

接続状態が存在する場合、 許可 ID とデータベース別名が、SQLCA の SQLERRMC フィールドに入れられます。 権限 ID が 8 バイトを超える場合、これは 8 バイトに切り捨てられ、 SQLCA の SQLWARN0 および SQLWARN1 フィールドにそれぞれ 'W' と 'A' のフラグが付きます。 データベース構成パラメーター DYN_QUERY_MGMT が使用可能の場合、 SQLCA の SQLWARN0 および SQLWARN7 フィールドにはそれぞれ 'W' と 'E' のフラグが付きます。

接続が存在せず、暗黙接続が可能な場合は、暗黙接続が試みられます。 暗黙接続が使用可能でない場合、この試みはエラーになります (既存の接続がない)。 接続がない場合、SQLERRMC フィールドはブランクになります。

アプリケーション・サーバーの国別コードとコード・ページは、 SQLERRMC フィールドに入れられます (正常に実行される CONNECT TO ステートメントの場合と同じ)。

この形式の CONNECT を使用する場合、

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

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

server-name は、 アプリケーション・サーバーを指定するデータベース別名である点に注意してください。 この名前は、アプリケーション・リクエスターの ローカル・ディレクトリーにリストされている必要があります。
注:DB2 (MVS 版) では 16 バイトのロケーション名がサポートされており、 SQL/DS と DB2/400 ではいずれも 18 バイトの宛先データベース名がサポートされます。 DB2 バージョン 7 では、 SQL CONNECT ステートメントに対して 8 バイトのデータベース別名を使用することだけがサポートされています。 ただし、データベース別名は、データベース接続サービス・ディレクトリーによって、 18 バイトのデータベース名にマッピングすることができます。

CONNECT TO ステートメントが実行される時点で、 アプリケーション・プロセスは接続可能状態でなければなりません (タイプ 1 CONNECT の接続状態については、 リモート作業単位の接続管理を参照してください。)

正常に接続された場合

CONNECT TO ステートメントが正常に実行された場合、

接続が正常に実行されなかった場合

CONNECT TO ステートメントが正常に実行されなかった場合、

IN SHARE MODE
データベースへの他の同時接続を可能にし、 他のユーザーがデータベースに排他モードで接続しないようにします。

IN EXCLUSIVE MODE68
排他ロックを保持するユーザーと同じ許可 ID を持つ場合を除き、 複数の並行アプリケーション・プロセスがアプリケーション・サーバーで何らかの操作を実行するのを防止します

ON SINGLE NODE
調整プログラムの区分を排他モードで接続し、 その他のすべての区分を共用モードで接続することを指定します。 このオプションは、区分データベースでのみ有効です。

RESET
アプリケーション・プロセスを現行サーバーから切断します。 コミット操作が行われます。 暗黙接続が使用可能な場合、 アプリケーション・プロセスは SQL ステートメントが発行されるまで未接続のままです。

USER authorization-name/host-variable
アプリケーション・サーバーに接続しようとするユーザー ID を指定します。 host-variable (ホスト変数) を指定する場合、 それは、長さ属性が 8 以下の文字ストリング変数でなければならず、 標識変数を含めることはできません。 host-variable に含まれるユーザー ID は、 左寄せする必要があり、引用符で区切ってはなりません。

USING password/host-variable
アプリケーション・サーバーに接続しようとするユーザー ID のパスワードを識別します。 password (パスワード) または host-variable (ホスト変数) には、 最大 18 文字を使用することができます。 ホスト変数を指定する場合、それは、長さ属性が 18 以下の文字ストリング変数でなければならず、 標識変数を含めることはできません。

NEW password/host-variable CONFIRM password
USER オプションによって識別されるユーザー ID に割り当てられる新規パスワードを識別します。 password (パスワード) または host-variable (ホスト変数) には、 最大 18 文字を使用することができます。 ホスト変数を指定する場合、それは、長さ属性が 18 以下の文字ストリング変数でなければならず、 標識変数を含めることはできません。 パスワードが変更されるシステムは、ユーザー認証がどのように設定されているかによって異なります。

例 1: C プログラムで、ユーザー ID FERMAT とパスワード THEOREM を使用して、 アプリケーション・サーバー TOROLAB3 に接続します。 ここで、TOROLAB3 は同じ名前のデータベース別名です。

  EXEC SQL  CONNECT TO TOROLAB3 USER FERMAT USING THEOREM;

例 2: C プログラムで、 データベース名がホスト変数 APP_SERVER (varchar(8)) に入っているアプリケーション・サーバーに接続します。 正常に接続された後、アプリケーション・サーバーの 3 文字の製品識別子を、 変数 PRODUCT (char(3)) にコピーします。

  EXEC SQL  CONNECT TO :APP_SERVER;
  if (strncmp(SQLSTATE,'00000',5))
    strncpy(PRODUCT,sqlca.sqlerrp,3);


脚注:

66
この DB2 ユニバーサル・データベース バージョン 7 のリリースは 'SQL07010' です。

67
詳細については、 アプリケーション開発の手引き の『複合環境におけるプログラミング』の章の『文字変換の拡張係数』の項を参照してください。

68
このオプションは DDCS ではサポートされません。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]