次の方法で共有


API によるブロック カーソルの使用

API サーバー カーソルには、1 回で 1 行しかフェッチできないという制限はないので、フェッチの実行ごとに複数行を取得できます。Microsoft SQL Server 2005 のようなクライアント/サーバー データベースで作業する場合、1 回に複数行を取得する方が効率的です。1 回のフェッチで返される行数を行セット サイズといいます。行セット サイズが 2 以上のカーソルをブロック カーソルといいます。サポートされている API では、次の方法でブロック カーソルを使用できます。

  • ODBC
    • ステートメント属性 SQL_ATTR_ROWSET_SIZE を行セット サイズに設定します。
    • 返された行から取得したデータを格納する変数の配列に列をバインドするには、列方向または行方向のバインドを使用します。各配列の要素数は行セット サイズと同じです。
    • SQLFetchScroll を呼び出すたびに、SQL_ATTR_ROWSET_SIZE で設定した行数分の行がフェッチされます。
  • OLE DB
    • 列データを保持する変数の配列に、行ハンドルの配列を割り当てて、各ハンドルにより表される列をバインドします。
    • cRows パラメータを行ハンドル配列内のハンドル数に設定し、prghRows パラメータを行ハンドルの配列のアドレスに設定して、IRowset::GetNextRows を呼び出します。
  • ADO
    • 取得する行数のデータを格納するバリアント型変数を Dim で宣言します。
    • オプションとして、レコードセットのメソッドである MoveMoveFirstMoveLastMoveNext、および MovePrevious を使用して、カーソル内の適当な位置を指定します。
    • 行を格納するバリアント変数のアドレスを array パラメータに代入し、返す行数を Crows パラメータに代入して、レコードセットのメソッド GetRows を呼び出します。オプションとして、レコードセット内のフェッチ位置を Start パラメータで指定できます。

参照

その他の技術情報

行セットと SQL Server カーソル
カーソルの行セット サイズ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手