游标行集大小
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
ODBC 游标并不仅限于一次提取一行。 它们可在每次调用 SQLFetch 或 SQLFetchScroll 时检索多个行。 使用 Microsoft SQL Server 等客户端/服务器数据库时,一次提取多行会更高效。 提取时返回的行数称为行集大小,并使用 SQLSetStmtAttr 的SQL_ATTR_ROW_ARRAY_SIZE指定。
SQLUINTEGER uwRowsize;
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);
行集大小大于 1 的游标称为块状游标。
有两种方法可用于绑定块状游标的结果集列:
按列绑定
每个列绑定到一个变量数组。 每个数组所具有的元素数目等于行集大小。
按行绑定
使用将所有列的数据和指示符保存在一个行中的结构来构建数组。 数组所具有的结构数目等于行集大小。
使用列或行绑定时,每次调用 SQLFetch 或 SQLFetchScroll 都会使用检索行集中的数据填充绑定数组。
SQLGetData 还可用于从块游标中检索列数据。 由于 SQLGetData 一次工作一行, 因此必须先调用 SQLSetPos ,才能在调用 SQLGetData 之前将行集中的特定行设置为当前行。
SQL Server Native Client ODBC 驱动程序使用行集快速检索整个结果集提供优化。 若要使用此优化,请在调用 SQLExecDirect 或 SQLExecute 时将游标属性设置为其默认值(仅向前、只读、行集大小 = 1)。 SQL Server Native Client ODBC 驱动程序设置默认结果集。 在不需要滚动的情况下将结果传输到客户端时,该优化功能比服务器游标更有效。 执行语句后,请增加行集大小并使用按列绑定或按行绑定。 这允许 SQL Server 使用默认结果集有效地将结果行发送到客户端,而 SQL Server Native Client ODBC 驱动程序会持续从客户端上的网络缓冲区拉取行。