游标行集大小

ODBC 游标并不仅限于一次提取一行。ODBC 游标在每次调用 SQLFetchSQLFetchScroll 时可以检索多行。当与客户端/服务器数据库(例如 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 的游标称为块状游标。

有两种方法可用于绑定块状游标的结果集列:

  • 按列绑定

    每个列绑定到一个变量数组。每个数组所具有的元素数目等于行集大小。

  • 按行绑定

    使用将所有列的数据和指示符保存在一个行中的结构来构建数组。数组所具有的结构数目等于行集大小。

使用按列绑定或按行绑定时,对 SQLFetchSQLFetchScroll 的每次调用都会使用检索的行集中的数据来填充绑定的数组。

还可以使用 SQLGetData 和块状游标来检索列数据。由于 SQLGetData 一次检索一行,因此,在调用 SQLGetData 之前,必须先调用 SQLSetPos 以便将行集中的特定行设置为当前行。

SQL Server Native Client ODBC 驱动程序使用行集快速检索整个结果集,进而提供了一个优化功能。若要使用此优化功能,请在调用 SQLExecDirectSQLExecute 时将游标属性设置为其默认值(只进、只读且行集大小 = 1)。SQL Server Native Client ODBC 驱动程序设置默认的结果集。在不需要滚动的情况下将结果传输到客户端时,该优化功能比服务器游标更有效。执行语句后,请增加行集大小并使用按列绑定或按行绑定。这样,SQL Server 即可使用默认结果集向客户端有效发送结果行,并且 SQL Server Native Client ODBC 驱动程序可以从客户端上的网络缓冲区中持续提取这些行。

请参阅

概念