API によるブロック カーソルの使用
API サーバー カーソルには、1 回で 1 行しかフェッチできないという制限はないので、フェッチの実行ごとに複数行を取得できます。Microsoft SQL Server のようなクライアント/サーバー データベースで作業する場合、1 回に複数行を取得する方が効率的です。1 回のフェッチで返される行数を行セット サイズといいます。行セット サイズが 2 以上のカーソルをブロック カーソルといいます。サポートされている API では、次の方法でブロック カーソルを使用できます。
ODBC
ステートメント属性 SQL_ATTR_ROWSET_SIZE を行セット サイズに設定します。
返された行から取得したデータを格納する変数の配列に列をバインドするには、列方向または行方向のバインドを使用します。各配列の要素数は行セット サイズと同じです。
SQLFetchScroll を呼び出すたびに、SQL_ATTR_ROWSET_SIZE で設定した行数分の行がフェッチされます。
OLE DB
列データを保持する変数の配列に、行ハンドルの配列を割り当てて、各ハンドルにより表される列をバインドします。
cRows パラメータを行ハンドル配列内のハンドル数に設定し、prghRows パラメータを行ハンドルの配列のアドレスに設定して、IRowset::GetNextRows を呼び出します。
ADO
取得する行数のデータを格納するバリアント型変数を Dim で宣言します。
オプションとして、レコードセットのメソッドである Move、MoveFirst、MoveLast、MoveNext、および MovePrevious を使用して、カーソル内の適当な位置を指定します。
行を格納するバリアント変数のアドレスを array パラメータに代入し、返す行数を Crows パラメータに代入して、レコードセットのメソッド GetRows を呼び出します。オプションとして、レコードセット内のフェッチ位置を Start パラメータで指定できます。