COBOL2002 ユーザーズガイド


23.2.9 カーソルオプションの設定

ODBCインタフェース機能では,ODBCカーソルライブラリの静的カーソルを使用するように次のODBCのオプションを設定してSQLのカーソル処理を実現しています。

表23‒4 ODBCのオプションに対応するSQLのカーソル処理

オプション名

設定値

機能

接続オプション

SQLSetConnectOption(hdbc,SQL_ODBC_CURSORS,SQL_CUR_USE_ODBC);

ドライバマネージャは,ドライバのスクロール機能を使用します。

ステートメントオプション

SQLSetStmtOption(hstmt,SQL_CONCURRENCY,SQL_CONCUR_VALUES);

カーソルは最適化同時実行制御を使用して値を比較します。

SQLSetStmtOption(hstmt,SQL_CURSOR_TYPE,SQL_SCROLL_STATIC);

結果セットのデータは静的なデータとなります。

しかし,このODBCオプションの設定でのカーソル処理では,次の制限事項があります。

このような問題を回避するため,SQL Serverのデータベースに接続する場合は,実行時環境変数CBLSQLCURUSEを指定してください。

〈この項の構成〉

(1) 実行時環境変数CBLSQLCURUSE

形式
CBLSQLCURUSE=DYNAMIC
規則
DYNAMIC

ODBCドライバのスクロール機能の動的カーソルを使用するように設定します。この実行時環境変数の指定がない場合は,ODBCカーソルライブラリの静的カーソルを使用するようにODBCオプションを設定します。DYNAMIC以外の値を指定した場合の結果は,保証しません。

DYNAMICを指定した場合,次の太字のオプションがデフォルトから変更されます。

表23‒5 DYNAMICを指定した場合の設定値と機能

オプション名

設定値

機能

接続オプション

SQLSetConnectOption(hdbc,SQL_ODBC_CURSORS,SQL_CUR_USE_DRIVER);

ドライバマネージャは,ドライバのスクロール機能を使用します。

ステートメントオプション

SQLSetStmtOption(hstmt,SQL_CONCURRENCY,SQL_CONCUR_VALUES);

カーソルは最適化同時実行制御を使用して値を比較します。

SQLSetStmtOption(hstmt,SQL_CURSOR_TYPE,SQL_SCROLL_DYNAMIC);

ドライバは行セットの行に対するキーだけを保存して使用します。

(2) 注意事項

この実行時環境変数を指定して,SQL Server以外のデータベースに接続する場合の動作は保証しません。

SQL ServerのODBCドライバを使用したODBCカーソルライブラリの静的カーソルを使用する場合と,ODBCドライバのスクロール機能の動的カーソルを使用する場合では,動作が異なります。例を次に示します。

詳細およびその他の動作については,SQL ServerのODBCドライバのリファレンスなどで確認してください。

表23‒6 使用するカーソルによる動作の差異

対象

ODBCカーソルライブラリの静的カーソル使用時

ODBCドライバのスクロール機能の動的カーソル使用時

SQL Serverのカーソル

クライアントカーソル

サーバカーソル

カーソル使用中の他クエリ(SELECTを含むSQL文)の実行

実行できない。※1

実行できる。

副問い合わせなど複数のSELECTを含むSQL文の実行

サポートされる。

サポートされない。※2

SQL文1行のサイズ

8,060バイトに制限されない。

8,060バイトに制限される。

テンポラリファイル

作成される。※3

作成されない。

注※1

次のエラーが出力されます。

[Microsoft][ODBC SQL Server Driver]ほかの実行結果のために接続できません。

注※2

サーバカーソルではサポートしていませんが,SQL Serverのドライバによって暗黙的にカーソルを変更し,該当のSQL文を正常に実行します。

このとき,次の警告を出力します。また,この暗黙のカーソル変更は,該当のSQL文だけに有効です。

[Microsoft][ODBC SQL Server Driver]カーソルの種類が変更されました。

[Microsoft][ODBC SQL Server Driver]カーソルの同時性が変更されました。

注※3

テンポラリファイルが作成できない場合,次のエラーが出力されます。

[Microsoft][ODBC Cursor Library] 一般エラー:ファイル バッファーを作成できません。