SQLSetConnectAttr -- 接続に関するオプションの設定

目的

仕様: DB2 CLI ODBC 1.0 ISO CLI

SQLSetConnectAttr() は接続に関するオプションを設定します。

構文

SQLRETURN   SQLSetConnectAttr   (SQLHDBC        ConnectionHandle,   
                              SQLINTEGER        Attribute,
                              SQLPOINTER        ValuePtr,
                              SQLINTEGER        StringLength);

関数の引き数

表 80. SQLSetConnectAttr の引き数

データ・タイプ 引き数 用途 説明
SQLHDBC ConnectionHandle 入力 接続ハンドル。
SQLINTEGER Attribute 入力 セットするオプション。
SQLPOINTER ValuePtr 入力 Attribute が ODBC 定義の属性であり、ValuePtr が文字ストリングまたは バイナリー・バッファーを指している場合は、この引き数は、ValuePtr の長さでなければならない。 Attribute が ODBC 定義の属性であり、ValuePtr が 整数であれば、StringLength は無視される。

Attribute が DB2 CLI 属性であれば、アプリケーションは属性の性質を StringLength 引き数を設定することによって示す。 StringLength には、以下の値を設定可能。

  • ValuePtr が文字ストリングを指すポインターであれば、 StringLength はストリングの長さまたは SQL_NTS である。
  • ValuePtr がバイナリー・バッファーを指すポインターであれば、 アプリケーションは SQL_LEN_BINARY_ATTR(length) マクロの 結果を StringLength に入れる。 これにより、 負の値が StringLength に入る。
  • ValuePtr が文字ストリングあるいはバイナリー・ストリング以外の値を 指すポインターであれば、StringLength の値は SQL_IS_POINTER でなければ ならない。
  • ValuePtr に固定長の値が含まれている場合は、 StringLength は、適宜、SQL_IS_INTEGER または SQL_IS_UINTEGER となる。
SQLINTEGER StringLength 入力 ValuePtr が文字ストリングまたはバイナリー・バッファーを指している場合は、 この引き数は ValuePtr の長さでなければならない。 ValuePtr がポインターであるがストリングまたはバイナリー・バッファーを 指していない場合は、StringLength の値は SQL_IS_POINTER でなければならない。 ValuePtr がポインターでない場合は、 StringLength の値は SQL_IS_NOT_POINTER でなければならない。

使用法

接続の接続属性は、別の SQLSetConnectAttr() 呼び出しで 変更されるか、SQLDisconnect() 呼び出しでその接続が除去されるまでは有効です。

SQLSetConnectAttr() には、属性情報が入ります。属性情報の形式は、 ヌル終了文字ストリングまたは 32 ビット整数値のいずれかとなります。 それぞれの形式は、属性の説明のところで述べられています。SQLSetConnectAttr()ValuePtr 引き数が指す文字ストリングの長さは StringLength です。

接続属性

現在定義されている属性は以下のとおりです。

SQL_ATTR_AUTOCOMMIT (DB2 CLI/ODBC)
モード・タイプを指定する 32 ビット整数値。サポートされる値は次のとおりです。

SQL_ATTR_CONNECTION_DEAD (DB2 CLI/ODBC)
接続がまだアクティブであるかどうかを示す読み取り専用の 32 ビット整数値。DB2 CLI は、以下のいずれかの値を戻します。

SQL_ATTR_LOGIN_TIMEOUT (DB2 CLI/ODBC)
アプリケーションに制御権を戻す前に、ログイン要求の完了を待機する秒数に対応する 32 ビット整数値です。

SQL_ATTR_FILENAME_FORMAT (DB2 Everyplace)
DB2e データベース・エンジンがファイル名を長形式または 8.3 形式のどちらで作成すべきかを指定する 32 ビット整数値。 アプリケーションは、SQLSetConnectAttr が呼び出されたときに、接続されたパスにカタログ・ファイルが存在しない場合にのみ、 ファイル名の形式を変更することができます。 既にカタログ・ファイルが存在するためにファイル名の形式の変更が否認された場合は、 SQLState HY000 の SQL_ERROR が戻されます。 例えば、既に DB2 Everyplace カタログ・ファイルが存在するパスにアプリケーションが接続した場合、 ファイル名の形式を変更しようとするすべての試みが失敗します。 アプリケーションが DB2 Everyplace カタログ・ファイルの存在しないパスに接続し、 最初の CREATE TABLE ステートメントの後にファイル名の形式を変更しようとした場合にも、 SQLSetConnectAttr が SQL_ERROR を戻します。 これは、最初の CREATE TABLE ステートメントの間にカタログ・ファイルが作成されており、 カタログ・ファイルが作成された後はファイル名の形式の変更が許可されていないためです。 デフォルトのファイル名の形式は、プラットフォームごとに異なります。 現在のところ、サポートされるすべてのプラットフォームにおいて、SQL_FILENAME_FORMAT_LONG がデフォルトです。

属性値:

 SQL_FILENAME_FORMAT_LONG - ファイルは長ファイル名形式で作成されます。
 SQL_FILENAME_FORMAT_83- ファイルは 8.3 ファイル名形式で作成されます。

戻りコード

診断

表 81. SQLSetConnectAttr の SQLSTATE

SQLSTATE 説明 解説
HY000 一般エラー。 ファイル名の形式を変更することはできない。
HY001 メモリーの割り振りの失敗。 DB2 CLI が、関数の実行または完了のサポートに必要なメモリーを 割り当てることができない。
HY014 ハンドル数の限界に到達済み。 DB2 CLI が内部リソースが原因でハンドルを割り当てることができなかった。
HY090 無効なストリング長またはバッファー長。 名前の長さ引き数のいずれかの値が、ゼロより小であるが、SQL_NTS と等しくない。

制約事項

関連した解説