カーソルの行セット サイズ
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
ODBC カーソルでは、一度にフェッチできる行数は制限されません。
SQLUINTEGER uwRowsize;
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);
行セット サイズが 2 以上のカーソルをブロック カーソルと呼びます。
ブロック カーソルの結果セット列は、次の 2 つの方法でバインドできます。
列方向のバインド
各列が変数の配列にバインドされます。 各配列には行セット サイズと同じ数の要素が含まれます。
行方向のバインディング
1 行のすべての列のデータとインジケーターが含まれる構造体を使用して配列が構築されます。 この配列には行セット サイズと同じ数の構造体が含まれます。
列方向または行方向のバインディングを使用する場合、
SQLGetData を使用して、ブロック カーソルから列データを取得することもできます。 SQLGetData は一度に 1 行ずつ動作するため、
SQL Server Native Client ODBC ドライバーは、行セットを使用して最適化を提供し、結果セット全体をすばやく取得します。 この最適化を使用するには、 SQLExecDirect または SQLExecute が呼び出されるときに、カーソル属性を既定値 (前方専用、読み取り専用、行セット サイズ = 1) に設定します。 SQL Server Native Client ODBC ドライバーは、既定の結果セットを設定します。 スクロールを使用しないでクライアントに結果を送信する場合は、既定の結果セットの方がサーバー カーソルよりも効率的です。 ステートメントを実行後、行セット サイズを増やし、列方向のバインドか行方向のバインドを使用します。 これにより、SQL Server では既定の結果セットを使用して結果行を効率的にクライアントに送信できます。一方、SQL Server Native Client ODBC ドライバーは、クライアント上のネットワーク バッファーから継続的に行をプルします。