機能
コネクションを接続します。
記述形式
参照項番
埋込み変数名 → “6.5 SQL埋込みホストプログラム”
文字 → “2.1.1 文字”
一般規則
CONNECT文の実行により、サーバとのコネクションを接続します。
CONNECT文が正常終了すると、現コネクションは、その時に接続されたコネクションとなります。すなわち、複数のコネクションを接続した場合、最後に実行したCONNECT文のコネクションが現コネクションとなります。
同じコネクション名を持つ複数のコネクションを接続することはできません。また、DEFAULTを指定した複数のコネクションを接続することもできません。
SQLサーバ名、コネクション名、ログイン名およびパスワードの前方および後方の空白は無視します。たとえば、SQLサーバ名“ SV1”の記述は“SV1”と等価です。
SQLサーバ名は、ローカルにあるSymfoware/RDBと接続する場合とリモートにあるSymfoware/RDBと接続する場合で、指定する内容が異なります。
ローカルのSymfoware/RDBと接続する場合(マルチRDB運用でない場合)は、データベース名を指定します。
ローカルのSymfoware/RDBと接続する場合(マルチRDB運用の場合)は、“[RDBシステム名.]データベース名”を指定します。RDBシステム名には、データベースの存在するSymfoware/RDBのシステム名を指定します。省略した場合は、環境変数RDBNAMEに指定されたRDBシステム名が有効となります。
リモートのSymfoware/RDBと接続する場合は、任意の文字列を指定することができます。ただし、同じSQLサーバ名を持つSERVER_SPECがクライアント用の動作環境ファイルに指定されていることが必要です。
SQLサーバ名は、文字列定数または文字列型の埋込み変数で指定します。
コネクション名は、複数のコネクションを接続する場合に、コネクションを識別する名前を指定します。ただし、コネクション名は一意であることが必要です。
コネクション名を省略した場合、SQLサーバ名がコネクション名になります。
コネクション名は、文字列定数または文字列型の埋込み変数で指定します。
サーバに接続する利用者を指定します。利用者は、埋込み変数または文字列で認可識別子とパスワードを斜線“/”で区切って指定します。ユーザ指定を省略した場合は、クライアント用の動作環境ファイルの実行パラメタ“DEFAULT_CONNECTION”に指定された認可識別子とパスワードでサーバに接続します。
認可識別子は、18文字以内の先頭が英字で始まる英数字、または9文字以内の日本語文字列を指定します。
以下の場合、本指定は不要です。
この場合、アプリケーション実行時のログイン名が有効となります。
ローカルのSymfoware/RDBと接続する場合
接続先ホスト名に自端末のIPアドレス、自端末のホスト名、“localhost”またはループバックアドレスを指定し、リモートのSymfoware/RDBと接続する場合
Symfoware/RDBの認証機構を使用し、ローカルのSymfoware/RDBと接続する場合は、ユーザ指定を省略できません。
リモートのSymfoware/RDBと接続するとき、ユーザ指定を省略した場合は、クライアント用の動作環境ファイルの実行パラメタ“DEFAULT_CONNECTION”に指定された認可識別子とパスワードでサーバに接続します。
DEFAULTを指定した場合は、クライアント用の動作環境ファイルの実行パラメタ“DEFAULT_CONNECTION”に指定された情報が有効となります。
ローカルのSymfoware/RDBと接続する場合、本指定に関係なく実行時のログイン名とパスワードでサーバに接続します。
不当な利用者がサーバに接続することを抑止するため、サーバに接続する時に利用者の認証が行われます。認証の方式は、以下の接続形式により異なります。
OSのログイン名で接続する場合
データベース専用利用者名で接続する場合
サーバに接続する利用者は、CREATE USER文で登録した利用者で、かつデータベースの使用権限がある利用者でなければなりません。
CREATE USER文でデータベース専用利用者として登録した利用者は、登録した認可識別子とパスワードを指定します。
CREATE USER文でOSの利用者として登録した利用者は、サーバにログイン可能なログイン名およびパスワードを指定します。
ログイン名とパスワードは、各サーバでは以下のように扱われます。
Solaris/Linuxの場合
ログイン名: ログイン名
パスワード: ログイン名のパスワード
Windowsの場合
ログイン名: ユーザ名
パスワード: ユーザ名のパスワード
使用例
ローカルのSymfoware/RDBと接続する場合(マルチRDB運用の場合)
CONNECT TO 'SYS1.DB01'
ローカルのSymfoware/RDBと接続する場合(マルチRDB運用ではない場合)
CONNECT TO 'DB01'
リモートのSymfoware/RDBと接続する場合
CONNECT TO 'SV1' USER 'USER1/777###FF'
備考.コネクション名を省略しているためコネクション名は、SQLサーバ名と同じ“SV1”となります。
リモートのSymfoware/RDBと接続する場合で、SQLサーバ名、ログイン名およびパスワードをホスト変数で指定します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。
EXEC SQL BEGIN DECLARE SECTION; VARCHAR server[13]; VARCHAR user[26]; EXEC SQL END DECLARE SECTION; : strcpy(server.sqlvar,"SV1"); server.sqllen = strlen(server.sqlvar); strcpy(user.sqlvar,"USER1/777###FF"); user.sqllen = strlen(user.sqlvar); EXEC SQL CONNECT TO :server USER :user;
備考.コネクション名を省略しているためコネクション名は、SQLサーバ名と同じ“SV1”となります。