块游标

许多应用程序花费大量时间在网络上传输数据。 一部分时间实际用于在网络上传输数据,一部分时间用于网络开销,例如驱动程序发出调用来请求一行数据。 如果应用程序有效使用游标(一次返回多行),则可以减少后者的时间。

应用程序始终可以选择使用块游标。 在一次只能提取一行的数据源上,必须在驱动程序中模拟块游标。 可以通过执行多个单行提取来完成此操作。 尽管这不太可能提供任何性能提升,但它为应用程序提供了机会。 此类应用程序的性能将提高,因为 DBMS 在本机执行块游标,并且与这些 DBMS 关联的驱动程序会公开它们。

使用块游标在单个提取中返回的行称为行集。 切勿将行集与结果集混淆。 在数据源中维护结果集,而在应用程序缓冲区中维护行集。 结果集是固定的,但行集不是 - 每次提取一组新行时,它都会更改位置和内容。 与单行游标(如传统的 SQL 只进游标)指向当前行一样,块游标指向行集,可以将其视为当前行

若要在提取多个行时对单个行执行该操作,应用程序必须首先指示哪行是当前行。 调用 SQLGetData 以及定位更新和删除语句需要当前行。 当块游标首次返回行集时,当前行是行集的第一行。 若要更改当前行,应用程序应调用 SQLSetPosSQLBulkOperations(通过书签进行更新)。 下图显示了结果集、行集、当前行、行集游标和块游标的关系。 有关详细信息,请参阅本节后面的使用块游标,以及定位更新和删除语句使用 SQLSetPos 更新数据

Fetching Next, Prior, First, and Last Rowsets

游标是否为块游标与是否可滚动无关。 例如,报告应用程序中的大部分工作都用于检索和打印行。 因此,使用只进块游标能以最快的速度工作。 它使用只进游标来避免可滚动游标的费用,使用块游标来减少网络流量。

本部分包含以下主题。