データベースに接続する DB2 CLI アプリケーションは通常、関数 SQLDriverConnect() を使用して接続します。この関数の入力引数の 1 つに DriverCompletion 値があります。これはウィンドウがいつ開くかを決定します。以下は DriverCompletion の値です。 |
||
| |例えば Kerberos 環境のアプリケーションなど、アプリケーションによってはユーザー ID またはパスワードを提供しなくてもユーザーが DB2 UDB サーバーに接続できることが必要な場合があります。 |アプリケーションが SQLDriverConnect() 呼び出し上で SQL_DRIVER_NO_PROMPT オプションを使用する場合、ユーザー認証なしで接続が試みられます。その場合、このキーワードは不要です。
| |サード・パーティー・アプリケーションが関係しており、アプリケーションが使用するプロンプト・レベルが SQL_DRIVER_NO_PROMPT 以外のものである場合、DB2 CLI はウィンドウを開いて欠落している情報を要求します。 |Trusted_Connection を SQLDriverConnect() への入力接続ストリングに提供することによって Yes に設定 ("Trusted_Connection=Yes") すると、DB2 CLI は接続ストリングからのユーザー ID またはパスワード・ストリングをすべて (空のストリングを含む) 無視し、接続関数のプロンプト・レベルも無視します。DB2 CLI は、現行の認証ユーザーを使用してデータベースへの接続を試みます。 |接続の試行が失敗すると、ユーザーにユーザー ID およびパスワードを入力するようにというプロンプトが出されます。
| |このキーワードは、SQLDriverConnect() に対する接続ストリングでのみ使用されます。db2cli.ini ファイルで設定しても効果はありません。
|SQLDescribeParam() 関数は、準備済み SQL ステートメントに関連したパラメーター・マーカーの記述を返します。
診断表は、SQLSTATE HYC00 を使って更新されました。
SQLSTATE | 記述 | 説明 |
---|---|---|
HYC00 | ドライバー使用不可能 | サーバー上のスキーマ関数ストアード・プロシージャーにアクセスできません。 スキーマ関数ストアード・プロシージャーをサーバーにインストールし、それにアクセスできることを確認してください。 |
DB2 コール・レベル・インターフェース (DB2 CLI) は、関数のサブセットを非同期で実行することができます。 DB2 CLI ドライバーは、関数を呼び出してからその関数の実行が完了するまでの間に、アプリケーションに制御を返します。 この関数は、実行が完了しないかぎり呼び出されるたびに SQL_STILL_EXECUTING を戻します。実行が完了すると、別の値 (たとえば SQL_SUCCESS) を戻します。
非同期実行に利点があるのは、シングルスレッドのオペレーティング・システムにおいてのみです。 マルチスレッドのオペレーティング・システム上で実行されるアプリケーションの場合、関数は別々のスレッドで実行されます。 非同期実行が可能なのは、通常は要求をサーバーに送ってから応答を待機する関数の場合です。 非同期で実行される関数は、待機することなくアプリケーションに制御を戻します。 すると、アプリケーションは他のタスクを実行するか、またはオペレーティング・システムに制御を戻すことができ、さらに割り込みを使って、SQL_STILL_EXECUTING 以外の戻りコードが戻されるまで繰り返し関数をポーリングすることができます。
CLI の非同期実行のサポートは、DB2 UDB バージョン 8.2 フィックスパック 1 (バージョン 8.1 フィックスパック 8 に相当) 以降の DB2 Universal Database (UDB) に組み込まれています。 このフィーチャーの資料は、http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp の DB2 UDB バージョン 7 インフォメーション・センターをご覧ください。 バージョン 7 の資料の情報はすべて、バージョン 8.2 フィックスパック 1 (バージョン 8.1 フィックスパック 8 に相当) にも当てはまります。 DB2 バージョン 8 のインフォメーション・センターには、このフィーチャーについての資料はありません。
SQL_ATTR_PING_DB は、32 ビットの整数であり、DB2 UDB クライアントと DB2 UDB サーバーの間の既存の接続のネットワーク応答時間を取得するために SQLGetConnectAttr() 関数とともに使用されます。 応答時間は、マイクロ秒単位で報告されます。
以前に確立されていた接続がデータベースによってドロップされた場合、0 の値が報告されます。 接続がアプリケーションによってクローズされた場合、08003 の SQLSTATE が報告されます。 この接続属性は、SQLGetConnectAttr() で戻すことができますが、SQLSetConnectAttr() で設定することはできません。 この属性を設定しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
資料中の SQLBindParameter 関数の入力パラメーターの項の説明は正しくありません。 正しい説明は、次のとおりです。
資料中の SQLMoreResults 関数の SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性の記述は不正確です。 正しいステートメント属性は SQL_ATTR_PARAMSET_SIZE です。 「使用法」の項は、次のような記載内容でなければなりません。
この関数は、以下の実行時に複数の結果セットを順次に戻すために使用されます。
CLI 接続属性であることに加えて、以下の属性は CLI 環境属性としてもサポートされています。
これらの属性に関する情報は、DB2 インフォメーション・センターまたは「CLI ガイドおよび参照 第 2 巻 (CLI Guide and Reference Volume 2)」にある、CLI 接続属性文書を参照してください。
動的両方向スクロール・カーソルの結果セット中の行に更新および削除を行うには、UPDATE または DELETE ステートメントに基本表中の少なくとも 1 つのユニーク・キーのすべての列が含まれていなければなりません。これは、主キーまたは他の任意のユニーク・キーです。
たとえば、カタログ関数 SQLTables() は結果セットを戻すと想定します。ただし、TABLE_CAT 列内の値は NULL 値であるとします。 RetCatalogAsCurrServer を 1 に設定すると、DBMS は TABLE_CAT 列に CURRENT SERVER 値を戻します。
db2 bind db2clipk.bnd collection NULLIDR1 db2 bind db2clipk.bnd collection NULLIDRAReopt および CurrentPackageSet キーワードの両方が指定された場合、CurrentPackageSet が優先されます。
db2 bind db2clipk.bnd collection NULLIDR1 db2 bind db2clipk.bnd collection NULLIDRASQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET は互いに排他的であるため、一方が設定されると他方は許可されません。
このオプションでは、毎回のデータベースへの接続後 SET CURRENT PACKAGESET SQL ステートメントが CurrentPackageSet 値と共に発行されます。デフォルトでは、この文節は付加されません。
SET CURRENT PACKAGESET SQL ステートメントは、 後続の SQL ステートメントのために使用するパッケージの選択に使用されるスキーマ名 (コレクション ID) を設定します。
CLI/ODBC アプリケーションは、動的 SQL ステートメントを発行します。 このオプションを使用すると、これらのステートメントの実行に使用される特権を制御することができます。
CLI/ODBC アプリケーションからの SQL ステートメントは、 指定されたスキーマの下で実行され、そこで定義された特権を使用します。
以下のパッケージ・セット名は予約済みです。「NULLID」、「NULLIDR1」、「NULLIDRA」。
Reopt および CurrentPackageSet キーワードの両方が指定された場合、CurrentPackageSet が優先されます。
CLI/ODBC アプリケーションは、動的 SQL ステートメントを発行します。 この接続属性を使用すると、これらのステートメントの実行に使用される特権をコントロールできます。
CLI/ODBC アプリケーションからの SQL ステートメントは、 指定されたスキーマの下で実行され、そこで定義された特権を使用します。
CLI/ODBC 構成キーワード CURRENTPACKAGESET の設定は、スキーマ名の指定に代わる、代替の方法です。
以下のパッケージ・セット名は予約済みです。「NULLID」、「NULLIDR1」、「NULLIDRA」。
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET は互いに排他的であるため、一方が設定されると他方は許可されません。
MapBigintCDefault は、BIGINT 列およびパラメーター・マーカーに SQL_C_DEFAULT が指定された場合に使用される C タイプを制御します。 このキーワードは主に、8 バイト整数を処理できない、Microsoft(R) Access などの Microsoft アプリケーションで使用する必要があります。 以下のように MapBigintCDefault を設定します。
このキーワードは、SQLBindParameter()、SQLBindCol()、および SQLGetData() など、SQL_C_DEFAULT が C タイプとして指定されている可能性のある CLI 関数の動作に影響を与えます。
このキーワードは、準備または記述要求で CLI ドライバーが要求する情報量を制御します。 デフォルトでは、サーバーが記述要求を受け取ると、結果セットの列に 表 25 のレベル 2 に含まれている情報を戻します。 ただし、アプリケーションはこの情報のすべてを必ずしも必要としないかもしれず、また逆に追加の情報を必要とするかもしれません。
DescribeOutputLevel キーワードを、クライアント・アプリケーションの要件に合うレベルに設定すると、パフォーマンスが向上する場合があります。クライアントおよびサーバー間で転送される記述データは、アプリケーションが必要とする最小量に限定されるためです。 DescribeOutputLevel 設定が低すぎる場合は、アプリケーションの機能に影響することがあります (アプリケーションの要件によって異なります)。 記述情報を検索する CLI 関数はこの場合は失敗しないかもしれませんが、戻される情報が不完全であるかもしれません。
DescribeOutputLevel にサポートされる設定は、以下のとおりです。
次の表は、サーバーが準備要求または記述要求を受け取った場合に戻す記述情報を形成するフィールドをリストしています。 これらのフィールドは各レベルにグループ化されています。CLI ドライバーが要求する記述情報のレベルを、DescribeOutputLevel CLI/ODBC 構成キーワードが制御します。
レベル 1 | レベル 2 | レベル 3 |
---|---|---|
SQL_DESC_COUNT SQL_COLUMN_COUNT SQL_DESC_TYPE SQL_DESC_CONCISE_TYPE SQL_COLUMN_LENGTH SQL_DESC_OCTET_LENGTH SQL_DESC_LENGTH SQL_DESC_PRECISION SQL_COLUMN_PRECISION SQL_DESC_SCALE SQL_COLUMN_SCALE SQL_DESC_DISPLAY_SIZE SQL_DESC_NULLABLE SQL_COLUMN_NULLABLE SQL_DESC_UNSIGNED SQL_DESC_SEARCHABLE SQL_DESC_LITERAL_SUFFIX SQL_DESC_LITERAL_PREFIX SQL_DESC_CASE_SENSITIVE SQL_DESC_FIXED_PREC_SCALE |
レベル 1 のすべての フィールド、および 以下のもの SQL_DESC_NAME SQL_DESC_LABEL SQL_COLUMN_NAME SQL_DESC_UNNAMED SQL_DESC_TYPE_NAME SQL_DESC_DISTINCT_TYPE SQL_DESC_REFERENCE_TYPE SQL_DESC_STRUCTURED_TYPE SQL_DESC_USER_TYPE SQL_DESC_LOCAL_TYPE_NAME SQL_DESC_USER_DEFINED_ TYPE_CODE |
all fields of levels 1 and 2 and: SQL_DESC_BASE_COLUMN_NAME SQL_DESC_UPDATABLE SQL_DESC_AUTO_UNIQUE_VALUE SQL_DESC_SCHEMA_NAME SQL_DESC_CATALOG_NAME SQL_DESC_TABLE_NAME SQL_DESC_BASE_TABLE_NAME |