快速只进游标 (ODBC)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)

连接到 SQL Server 实例时,SQL Server Native Client ODBC 驱动程序支持对仅进只读游标的性能优化。 快速只进游标由驱动程序和服务器采用近似于默认结果集的方式在内部实现。 除高性能之外,快速只进游标还具有以下特征:

  • 不支持 SQLGetData 。 结果集列必须绑定到程序变量。

  • 当检测到达游标末尾时,服务器自动关闭游标。 应用程序仍必须调用 SQLCloseCursorSQLFreeStmt(SQL_CLOSE),但驱动程序不必将关闭请求发送到服务器。 这就省去了通过网络往返服务器。

应用程序使用驱动程序特定的语句属性 SQL_SOPT_SS_CURSOR_OPTIONS 请求快速只进游标。 如果设置为 SQL_CO_FFO,则启用快速只进游标,不启用自动提取。 如果设置为 SQL_CO_FFO_AF,则同时启用自动提取选项。 有关自动提取的详细信息,请参阅 将 Autofetch 与 ODBC 游标配合使用。

启用了自动提取的快速只进游标可用于检索较小的结果集,只需进行一次服务器往返。 在这些步骤中, n 是要返回的行数:

  1. 将 SQL_SOPT_SS_CURSOR_OPTIONS 设置为 SQL_CO_FFO_AF。

  2. 将SQL_ATTR_ROW_ARRAY_SIZE设置为 n + 1。

  3. 将结果列绑定到 n + 1 个元素的数组(如果实际提取 n + 1 行,则安全)。

  4. 使用 SQLExecDirectSQLExecute 打开游标。

  5. 如果返回状态为SQL_SUCCESS,则调用 SQLFreeStmtSQLCloseCursor 关闭游标。 所有行数据将位于绑定程序变量中。

使用这些步骤, SQLExecDirectSQLExecute 发送启用了自动提取选项的游标打开请求。 对于来自客户端的单个请求,服务器执行以下操作:

  • 打开游标。

  • 生成结果集并将行发送给客户端。

  • 由于行集大小设置为比结果集中的行数大 1,因此服务器检测到游标末尾并关闭游标。

另请参阅

游标编程详细信息 (ODBC)