行集大小

要使用的行集大小取决于应用程序。 基于屏幕的应用程序通常遵循两种策略之一。 第一种策略是将行集大小设置为在屏幕上显示的行数;如果用户调整屏幕大小,应用程序会相应地更改行集大小。 第二种策略是将行集大小设置为较大的数字,例如 100,这个数字可以减少对数据源的调用数。 应用程序尽可能在行集中本地滚动,仅在行集外滚动时才提取新行。

其他应用程序(如报表)往往将行集大小设置为应用程序可以合理处理的最大行数(有了较大的行集,每行的网络开销有时会减少)。 行集的精确大小取决于每一行的大小和可用内存量。

行集大小是通过调用 SQLSetStmtAttr 来设置的,其 Attribute 参数为 SQL_ATTR_ROW_ARRAY_SIZE。 即使在已提取行之后,应用程序也可以(通过调用 SQLBindCol 或指定绑定偏移量)更改行集大小、绑定新的行集缓冲区,或是同时实现两种操作。 更改行集大小的影响取决于函数:

  • SQLFetch 和 SQLFetchScroll 通过调用时得行集大小来确定要提取的行数。 但是,FetchOrientation为 SQL_FETCH_NEXT 的 SQLFetchScroll 根据上一次提取的行集递增游标,然后根据当前行集大小提取行集。

  • SQLSetPos 使用在对上述 SQLFetch 或 SQLFetchScroll 调用生效的行集大小,因为 SQLSetPos 对已设置的行集进行操作。 如果 SQLBulkOperations 在更改行集大小后被调用,SQLSetPos 还将获取新的行集大小。

  • SQLBulkOperations 使用在调用时生效的行集大小,因为它对独立于任何已提取行集的表执行操作。