快速只进游标 (ODBC)
连接到 SQL Server 实例时,SQL Server Native Client ODBC 驱动程序支持只进只读游标的性能优化。 快速只进游标由驱动程序和服务器采用近似于默认结果集的方式在内部实现。 除高性能之外,快速只进游标还具有以下特征:
不支持 SQLGetData。 结果集列必须与程序变量绑定。
当检测到达游标末尾时,服务器自动关闭游标。 应用程序仍需调用 SQLCloseCursor 或 SQLFreeStmt(SQL_CLOSE),但驱动程序不必向服务器发送关闭请求。 这就省去了通过网络往返服务器。
应用程序使用驱动程序特定的语句属性 SQL_SOPT_SS_CURSOR_OPTIONS 请求快速只进游标。 如果设置为 SQL_CO_FFO,则启用快速只进游标,不启用自动提取。 如果设置为 SQL_CO_FFO_AF,则同时启用自动提取选项。 有关自动提取的详细信息,请参阅结合使用自动提取和 ODBC 游标。
启用了自动提取的快速只进游标可用于检索较小的结果集,只需进行一次服务器往返。 在以下步骤中,n 为要返回的行数:
将 SQL_SOPT_SS_CURSOR_OPTIONS 设置为 SQL_CO_FFO_AF。
将 SQL_ATTR_ROW_ARRAY_SIZE 设置为 n + 1。
将结果集绑定到 n + 1 元素数组(为安全起见,假设实际提取 n + 1 行)。
用 SQLExecDirect 或 SQLExecute 打开游标。
如果返回状态为 SQL_SUCCESS,则调用 SQLFreeStmt 或 SQLCloseCursor 关闭游标。 所有行数据将位于绑定程序变量中。
通过以上步骤,SQLExecDirect 或 SQLExecute 发送启用自动提取选项的游标打开请求。 对于来自客户端的单个请求,服务器执行以下操作:
打开游标。
生成结果集并将行发送给客户端。
由于行集大小设置为比结果集中的行数大 1,因此服务器检测到游标末尾并关闭游标。