Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » Sybase Open Client API » 在 Open Client 应用程序中使用 SQL

 

使用游标

ct_cursor 函数用于管理游标。此函数采用 type 参数描述您要执行的操作。

支持的游标类型

并非 SQL Anywhere 支持的所有游标类型都能通过 Open Client 接口使用。您不能通过 Open Client 使用滚动游标、动态滚动游标或不敏感游标。

唯一性和可更新性是游标的两个属性。游标可以唯一(每个行都带有主键或唯一性信息,无论应用程序是否使用它),也可以不唯一。游标可以是只读游标,也可以是可更新游标。如果游标是可更新游标且不唯一,则性能可能会受到影响,因为在这种情况下,无论 CS_CURSOR_ROWS 设置是什么,都不会对任何行执行预取。

使用游标的步骤

与其它某些接口不同(例如嵌入式 SQL),Open Client 会将游标与一个以字符串表示的 SQL 语句相关联。嵌入式 SQL 首先准备一个语句,然后游标使用该语句句柄进行声明。

♦  在 Open Client 中使用游标
  1. 要在 Open Client 中声明游标,请使用将 CS_CURSOR_DECLARE 作为 type 参数的 ct_cursor。

  2. 声明游标之后,可以使用将 CS_CURSOR_ROWS 作为 type 参数的 ct_cursor 函数来控制每次从服务器读取一行时要预取多少行到客户端。

    在客户端存储预取的行会减少对服务器的调用,从而提高总体吞吐量,同时缩短周转时间。预取的行不会立即传递到应用程序,而是会存储在客户端的缓冲区内备用。

    PREFETCH 数据库选项的设置控制其它接口的行预取。Open Client 连接会忽略该设置。对于非唯一的可更新游标,将忽略 CS_CURSOR_ROWS 设置。

  3. 要在 Open Client 中打开游标,请使用将 CS_CURSOR_OPEN 作为 type 参数的 ct_cursor 函数。

  4. 使用 ct_fetch 函数可将每行读取到应用程序中。

  5. 要关闭游标,请使用带 CS_CURSOR_CLOSE 的 ct_cursor。

  6. 在 Open Client 中,您还需要释放与游标相关联的资源。使用带 CS_CURSOR_DEALLOC 的 ct_cursor 函数可以完成此任务。您还可以使用带附加参数 CS_DEALLOC 的 CS_CURSOR_CLOSE 通过单个步骤执行这些操作。


通过游标修改行