ページの先頭行へ戻る
Enterprise Postgres 12 アプリケーション開発ガイド
FUJITSU Software

D.2.1 データベースサーバへの接続

以下のSQL文を使用して、データベースへ接続します。

EXEC SQL CONNECT TO target [AS connection-name] [USER user-name] END-EXEC.

targetは以下の方法で指定されます。

接続対象をリテラル(つまり、変数を参照しない形)で指定し、その値を引用符でくくらなかった場合、大文字小文字の区別に関して通常のSQLの規則が適用されます。 また、この場合、必要に応じて個々のパラメータを二重引用符で別々にくくることもできます。 実際には、おそらく(単一引用符でくくられた)文字列リテラルもしくは変数の参照を使用した方がエラーをより防止することができます。 DEFAULT接続対象は、デフォルトデータベース、デフォルトのユーザ名で接続を初期化します。 この場合は、ユーザ名と接続名を分けて指定することができません。

ユーザ名を指定するには、別の方法もあります。

これまで同様、usernamepasswordは、SQL識別子、SQL文字列リテラル、文字型変数への参照を取ることができます。

1つのプログラム内で複数の接続を処理する場合には、connection-nameを使用します。 プログラムで1つしか接続を使わない場合は省略してかまいません。 最も最近に開かれた接続が現在の接続になり、SQL文を実行しようとする時にデフォルトでこの接続が使用されます(本章の後で説明します)。

以下にCONNECT文について、数例を示します。

EXEC SQL CONNECT TO mydb@sql.mydomain.com END-EXEC.
EXEC SQL CONNECT TO unix:postgresql://sql.mydomain.com/mydb AS myconnection USER john END-EXEC.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 TARGET PIC X(25).
01 USER PIC X(5).
EXEC SQL END DECLARE SECTION END-EXEC.
 ...
MOVE "mydb@sql.mydomain.com" TO TARGET.
MOVE "john" TO USER.
EXEC SQL CONNECT TO :TARGET USER :USER END-EXEC.

最後の形式では、文字変数参照として上を参照する変数を使用しています。このため、固定長文字列(つまり、VARYINGを指定しない)変数しか使用できません。後続のスペースは無視されます。後の節で、接頭辞にコロンを持つ場合のSQL文内でのCOBOL変数の使用方法について説明します。

接続対象の書式は標準SQLでは規定されていないことに注意してください。 そのため、移植可能なアプリケーションを開発したいのであれば、上の例の最後の方法を参考にして、接続対象文字列をどこかにカプセル化してください。