アプリケーション開発: コール・レベル・インターフェース (CLI)
|
|
|SQLDescribeParam 関数 (CLI) の診断表の更新
|SQLDescribeParam() 関数は、準備済み SQL ステートメントに関連したパラメーター・マーカーの記述を返します。
|診断表は、SQLSTATE HYC00 を使って更新されました。
|
|診断
|
|
|
|表 24. SQLDescribeParam SQLSTATE
|
|
|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 接続属性
|
|SQL_ATTR_PING_DB (DB2 CLI v8.2)
|SQL_ATTR_PING_DB は、32 ビットの整数であり、DB2 UDB クライアントと DB2 UDB サーバーの間の既存の接続のネットワーク応答時間を取得するために SQLGetConnectAttr() 関数とともに使用されます。
|応答時間は、マイクロ秒単位で報告されます。
|以前に確立されていた接続がデータベースによってドロップされた場合、0 の値が報告されます。
|接続がアプリケーションによってクローズされた場合、08003 の SQLSTATE が報告されます。
|この接続属性は、SQLGetConnectAttr() で戻すことができますが、SQLSetConnectAttr() で設定することはできません。
|この属性を設定しようとすると、
|SQLSTATE は HYC00 (ドライバーが機能しない) になります。
|
|
|SQLBindParameter 関数 (CLI)
|資料中の SQLBindParameter 関数の入力パラメーターの項の説明は正しくありません。
|正しい説明は、次のとおりです。
|
|
|- 入力パラメーター
|- ColumnSize 0 は、 列またはストアード・プロシージャー・パラメーターのサイズとして提供された SQL タイプの最大長を DB2 CLI が使用することを意味します。
|DB2 CLI はそのサイズを使用して必要な変換をすべて実行します。
|
|
|
|
|SQLMoreResults 関数 (CLI)
|資料中の SQLMoreResults 関数の SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性の記述は不正確です。
|正しいステートメント属性は SQL_ATTR_PARAMSET_SIZE です。
|「使用法」の項は、次のような記載内容でなければなりません。
|この関数は、以下の実行時に複数の結果セットを順次に戻すために使用されます。
|
|
|- SQL_ATTR_PARAMSET_SIZE ステートメント属性および SQLBindParameter() で指定された入力パラメーター値の配列が指定されているパラメーター化照会
追加の環境属性
CLI 接続属性であることに加えて、以下の属性は CLI 環境属性としてもサポートされています。
- SQL_ATTR_INFO_ACCTSTR
- SQL_ATTR_INFO_APPLNAME
- SQL_ATTR_INFO_USERID
- SQL_ATTR_INFO_WRKSTNNAME
これらの属性に関する情報は、DB2 インフォメーション・センターまたは「CLI ガイドおよび参照 第 2 巻 (CLI Guide and Reference Volume 2)」にある、CLI 接続属性文書を参照してください。
動的両方向スクロール・カーソルの要件
動的両方向スクロール・カーソルの結果セット中の行に更新および削除を行うには、UPDATE または DELETE ステートメントに基本表中の少なくとも 1 つのユニーク・キーのすべての列が含まれていなければなりません。これは、主キーまたは他の任意のユニーク・キーです。
|
|
|RetCatalogAsCurrServer CLI/ODBC 構成キーワード
|
|- キーワードの説明:
|- カタログ関数は、カタログ列に関して NULL 値ではなく CURRENT SERVER 値を戻します。
|
|- db2cli.ini キーワードの構文:
|- RetCatalogAsCurrServer= 0 | 1
|
|- デフォルト設定:
|- ターゲットの DBMS がカタログ列に関して NULL を戻しても、CURRENT SERVER 値が置き換えられることはありません。
|
|- 使用上の注意:
|- ターゲットの DBMS のカタログ関数がカタログ列に関して NULL 値を戻す場合は、RetCatalogAsCurrServer を 1 に設定すると、DBMS は CURRENT SERVER 値を戻すようになります。
|
|- 0 = カタログ関数は、カタログ列に関して NULL 値を戻します (デフォルト)。
|- 1 = カタログ関数は、カタログ列に関して NULL 値ではなく CURRENT SERVER 値を戻します。
|たとえば、カタログ関数 SQLTables() は結果セットを戻すと想定します。ただし、TABLE_CAT 列内の値は NULL 値であるとします。
|RetCatalogAsCurrServer を 1 に設定すると、DBMS は TABLE_CAT 列に CURRENT SERVER 値を戻します。
|
|
|注:
|このキーワードは、DB2 UDB for Linux、UNIX(R)、および Windows(R) バージョン 8.2 フィックスパック 3 (バージョン 8.1 フィックスパック 10 に相当) 以降でサポートされます。
|
|
ReceiveTimeout CLI/ODBC 構成キーワード
- キーワードの説明:
- 接続の試行を終了して通信タイムアウト・エラーを生成する前に確立された接続でサーバーからの応答を待つ時間を秒で指定します。
- db2cli.ini キーワードの構文:
- ReceiveTimeout = 0 | 1 | 2 |
... | 32767
- デフォルト設定:
- クライアントは確立された接続上でサーバーからの応答を無限に待ちます。
- 同等のステートメント属性:
- SQL_ATTR_RECEIVE_TIMEOUT
- 使用上の注意:
- デフォルト値 0 はクライアントが応答を無限に待つことを示します。接続確立中に受信タイムアウトの影響はありません。受信タイムアウトは TCP/IP でのみサポートされ、他のプロトコルでは無視されます。
SQL_ATTR_RECEIVE_TIMEOUT ステートメント属性
- SQL_ATTR_RECEIVE_TIMEOUT (DB2 CLI v8)
- 接続の試行を終了して通信タイムアウト・エラーを生成する前に、クライアントが確立された接続でサーバーからの応答を待つ秒数である、32 ビットの整数値。デフォルト値 0 はクライアントが応答を無限に待つことを示します。接続確立中に受信タイムアウトの影響はありません。受信タイムアウトは TCP/IP でのみサポートされ、他のプロトコルでは無視されます。サポートされている値は、0 から 32767 の整数です。
Reopt CLI/ODBC 構成キーワード
- キーワードの説明:
- 照会の最適化、または特殊レジスターまたはパラメーター・マーカーのある SQL ステートメントの再最適化を使用可能にします。
- db2cli.ini キーワードの構文:
- Reopt = 2 | 3 | 4
- デフォルト設定:
- 照会の実行時には照会最適化は生じません。コンパイラーによって選択されるデフォルト推定値が特殊レジスターまたはパラメーター・マーカーとして使用されます。
- 同等のステートメント属性:
- SQL_ATTR_REOPT
- 使用上の注意:
- 最適化は、コンパイラー選択のデフォルト推定値ではなく、照会実行時に使用可能な値を特殊レジスターまたはパラメーター・マーカーに使用することにより、生じます。キーワードの有効値は次のとおりです。
- 2 = SQL_REOPT_NONE。これがデフォルトです。照会の実行時には照会最適化は生じません。コンパイラーによって選択されるデフォルト推定値が特殊レジスターまたはパラメーター・マーカーに使用されます。
デフォルトの「NULLID」パッケージ・セットは動的 SQL ステートメントの実行に使用されます。
- 3 = SQL_REOPT_ONCE。照会最適化は照会が初めて行われるとき、照会実行時に一度起こります。REOPT ONCE バインド・オプションに結合している「NULLIDR1」パッケージ・セットが使用されます。
- 4 = SQL_REOPT_ALWAYS。照会最適化または再最適化は、照会実行の度に照会実行時に生じます。REOPT ALWAYS バインド・オプションに結合している「NULLIDRA」パッケージ・セットが使用されます。
「NULLIDR1」および「NULLIDRA」は予約済みパッケージ・セット名で、これらが使用されるときにはそれぞれ、REOPT ONCE および REOPT ALWAYS を暗示します。
これらのパッケージ・セットは以下のコマンドで明示的に作成する必要があります。
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
Reopt および CurrentPackageSet キーワードの両方が指定された場合、CurrentPackageSet が優先されます。
SQL_ATTR_REOPT ステートメント属性
- SQL_ATTR_REOPT (DB2 CLI v8)
- 特殊レジスターまたはパラメーター・マーカーを含む SQL ステートメントの照会最適化を使用可能にする 32 ビットの整数値。最適化は、コンパイラー選択のデフォルト推定値ではなく、照会実行時に使用可能な値を特殊レジスターまたはパラメーター・マーカーに使用することにより、生じます。属性の有効値は次のとおりです。
- 2 = SQL_REOPT_NONE。これがデフォルトです。照会の実行時には照会最適化は生じません。コンパイラーによって選択されるデフォルト推定値が特殊レジスターまたはパラメーター・マーカーに使用されます。
デフォルトの「NULLID」パッケージ・セットは動的 SQL ステートメントの実行に使用されます。
- 3 = SQL_REOPT_ONCE。照会最適化は照会が初めて行われるとき、照会実行時に一度起こります。REOPT ONCE バインド・オプションに結合している「NULLIDR1」パッケージ・セットが使用されます。
- 4 = SQL_REOPT_ALWAYS。照会最適化または再最適化は、照会実行の度に照会実行時に生じます。REOPT ALWAYS バインド・オプションに結合している「NULLIDRA」パッケージ・セットが使用されます。
「NULLIDR1」および「NULLIDRA」は予約済みパッケージ・セット名で、これらが使用されるときにはそれぞれ、REOPT ONCE および REOPT ALWAYS を暗示します。
これらのパッケージ・セットは次のコマンドで明示的に作成する必要があります。
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET は互いに排他的であるため、一方が設定されると他方は許可されません。
CurrentPackageSet CLI/ODBC 構成キーワード
- キーワードの説明:
- すべての接続の後に SET CURRENT PACKAGESET ステートメントを発行します。
- db2cli.ini キーワードの構文:
- CurrentPackageSet = スキーマ名
- デフォルト設定:
- 文節は付加されません。
- 同等の接続属性:
- SQL_ATTR_CURRENT_PACKAGE_SET
- 使用上の注意:
-
このオプションでは、毎回のデータベースへの接続後 SET CURRENT PACKAGESET SQL ステートメントが CurrentPackageSet 値と共に発行されます。デフォルトでは、この文節は付加されません。
SET CURRENT PACKAGESET SQL ステートメントは、
後続の SQL ステートメントのために使用するパッケージの選択に使用されるスキーマ名 (コレクション ID) を設定します。
CLI/ODBC アプリケーションは、動的 SQL ステートメントを発行します。
このオプションを使用すると、これらのステートメントの実行に使用される特権を制御することができます。
- CLI/ODBC アプリケーションから SQL ステートメントを実行するときに使用するスキーマを選択します。
- スキーマ内のオブジェクトに必要な特権があることを確認してから、
それに従って再バインドします。
- CurrentPackageSet オプションをこのスキーマに設定します。
CLI/ODBC アプリケーションからの SQL ステートメントは、
指定されたスキーマの下で実行され、そこで定義された特権を使用します。
以下のパッケージ・セット名は予約済みです。「NULLID」、「NULLIDR1」、「NULLIDRA」。
Reopt および CurrentPackageSet キーワードの両方が指定された場合、CurrentPackageSet が優先されます。
SQL_ATTR_CURRENT_PACKAGE_SET 接続属性
- SQL_ATTR_CURRENT_PACKAGE_SET (DB2 CLI v5)
- 後続の SQL ステートメント用のパッケージの選択に使用されるスキーマ名 (コレクション ID) を示すヌル終了文字ストリング。
この属性を設定すると、
SET CURRENT PACKAGESET SQL ステートメントが発行されます。
この属性が接続以前に設定された場合、
接続時に SET CURRENT PACKAGESET SQL ステートメントが発行されます。
CLI/ODBC アプリケーションは、動的 SQL ステートメントを発行します。
この接続属性を使用すると、これらのステートメントの実行に使用される特権をコントロールできます。
- CLI/ODBC アプリケーションから SQL ステートメントを実行するときに使用するスキーマを選択します。
- スキーマ内のオブジェクトに必要な特権があることを確認してから、
それに従って再バインドします。
これは特に、COLLECTION <collid> オプションを使用して、CLI パッケージ (sqllib/bnd/db2cli.lst) をバインドすることを意味します。
詳細については、BIND コマンドを参照してください。
- CURRENTPACKAGESET オプションをこのスキーマに設定します。
CLI/ODBC アプリケーションからの SQL ステートメントは、
指定されたスキーマの下で実行され、そこで定義された特権を使用します。
CLI/ODBC 構成キーワード CURRENTPACKAGESET の設定は、スキーマ名の指定に代わる、代替の方法です。
以下のパッケージ・セット名は予約済みです。「NULLID」、「NULLIDR1」、「NULLIDRA」。
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET は互いに排他的であるため、一方が設定されると他方は許可されません。
MapBigintCDefault CLI/ODBC 構成キーワード
- キーワードの説明:
- BIGINT 列およびパラメーター・マーカーのデフォルト C タイプを指定します。
- db2cli.ini キーワードの構文:
- MapBigintCDefault = 0 | 1 | 2
- デフォルト設定:
- BIGINT データのデフォルト C タイプ表記は SQL_C_BIGINT です。
- 使用上の注意:
-
MapBigintCDefault は、BIGINT 列およびパラメーター・マーカーに SQL_C_DEFAULT が指定された場合に使用される C タイプを制御します。
このキーワードは主に、8 バイト整数を処理できない、Microsoft(R) Access などの Microsoft アプリケーションで使用する必要があります。
以下のように MapBigintCDefault を設定します。
- 0 - デフォルト SQL_C_BIGINT C タイプ表記の場合
- 1 - SQL_C_CHAR C タイプ表記の場合
- 2 - SQL_C_WCHAR C タイプ表記の場合
このキーワードは、SQLBindParameter()、SQLBindCol()、および SQLGetData() など、SQL_C_DEFAULT が C タイプとして指定されている可能性のある CLI 関数の動作に影響を与えます。
DescribeOutputLevel CLI/ODBC 構成キーワード
- キーワードの説明:
- 準備要求または記述要求中に CLI ドライバーによって要求される出力列記述情報のレベルを設定します。
- db2cli.ini キーワードの構文:
- DescribeOutputLevel = 0 | 1 | 2 | 3
- デフォルト設定:
- 表 25 のレベル 2 にリストされた記述情報を要求します。
- 使用上の注意:
-
このキーワードは、準備または記述要求で CLI ドライバーが要求する情報量を制御します。
デフォルトでは、サーバーが記述要求を受け取ると、結果セットの列に 表 25 のレベル 2 に含まれている情報を戻します。
ただし、アプリケーションはこの情報のすべてを必ずしも必要としないかもしれず、また逆に追加の情報を必要とするかもしれません。
DescribeOutputLevel キーワードを、クライアント・アプリケーションの要件に合うレベルに設定すると、パフォーマンスが向上する場合があります。クライアントおよびサーバー間で転送される記述データは、アプリケーションが必要とする最小量に限定されるためです。
DescribeOutputLevel 設定が低すぎる場合は、アプリケーションの機能に影響することがあります (アプリケーションの要件によって異なります)。
記述情報を検索する CLI 関数はこの場合は失敗しないかもしれませんが、戻される情報が不完全であるかもしれません。
DescribeOutputLevel にサポートされる設定は、以下のとおりです。
- 0 - 記述情報はクライアント・アプリケーションに戻されない
- 1 - レベル 1 (表 25 参照) に分類される記述情報がクライアント・アプリケーションに戻される
- 2 - (デフォルト) レベル 2 (表 25 参照) に分類される記述情報がクライアント・アプリケーションに戻される
- 3 - レベル 3 (表 25 参照) に分類される記述情報がクライアント・アプリケーションに戻される
次の表は、サーバーが準備要求または記述要求を受け取った場合に戻す記述情報を形成するフィールドをリストしています。
これらのフィールドは各レベルにグループ化されています。CLI ドライバーが要求する記述情報のレベルを、DescribeOutputLevel CLI/ODBC 構成キーワードが制御します。
注:
必ずしもすべてのレベルの記述情報が、すべての DB2(R) サーバーによってサポートされるとは限りません。
すべてのレベルの記述情報は、DB2 Universal Database(TM) (UDB) for Linux(TM)、UNIX(R)、Windows(R) バージョン 8 以降、DB2 UDB for z/OS(R) バージョン 8 以降、および DB2 UDB for iSeries(TM) バージョン 5 リリース 3 以降の DB2 サーバーでサポートされます。
他のすべての DB2 サーバーは、DescribeOutputLevel について 2 または 0 の設定値しかサポートしていません。
表 25. 記述情報のレベル
レベル 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 |
[ ページのトップ |前ページ | 次ページ | 目次 ]