COBOL2002 ユーザーズガイド
ODBCインタフェース機能では,ODBCカーソルライブラリの静的カーソルを使用するように次のODBCのオプションを設定してSQLのカーソル処理を実現しています。
表24-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を指定してください。
CBLSQLCURUSE=DYNAMIC
表24-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); | ドライバは行セットの行に対するキーだけを保存して使用します。 |
この実行時環境変数を指定して,SQL Server以外のデータベースに接続する場合の動作は保証しません。
SQL ServerのODBCドライバを使用したODBCカーソルライブラリの静的カーソルを使用する場合と,ODBCドライバのスクロール機能の動的カーソルを使用する場合では,動作が異なります。例を次に示します。
詳細およびその他の動作については,SQL ServerのODBCドライバのリファレンスなどで確認してください。
表24-6 使用するカーソルによる動作の差異
対象 | ODBCカーソルライブラリの静的カーソル使用時 | ODBCドライバのスクロール機能の動的カーソル使用時 |
---|---|---|
SQL Serverのカーソル | クライアントカーソル | サーバカーソル |
カーソル使用中の他クエリ(SELECTを含むSQL文)の実行 | 実行できない。※1 | 実行できる。 |
副問い合わせなど複数のSELECTを含むSQL文の実行 | サポートされる。 | サポートされない。※2 |
SQL文1行のサイズ | 8,060バイトに制限されない。 | 8,060バイトに制限される。 |
テンポラリファイル | 作成される。※3 | 作成されない。 |
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.