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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程 » 在应用程序中使用 SQL » 使用游标

 

游标定位

当游标打开之后,它位于第一行之前。您可以将游标移到以查询结果的开头或结尾作为参照的一个绝对位置,或者移到以当前游标位置作为参照的一个相对位置。如何更改游标位置以及可以执行什么操作的具体情况受编程接口约束。

在游标中可读取的行位置编号受整数的大小制约。您最多可以读取到第 2147483646 行,这个数字比可以在整数中保存的值小 1。在使用负数(从末尾开始计算行数)时,您最多可以读取到的行数比整数中可保存的最大负值大 1。

您可以使用特殊定位的更新操作和删除操作来更新或删除位于游标当前位置的行。如果游标定位在第一行之前或最后一行之后,则会返回错误,指示没有相应的游标行。

游标定位问题

对敏感性未定型游标的插入和某些更新会导致游标定位发生问题。SQL Anywhere 不将插入的行放在游标内可预测的位置,除非在 SELECT 语句上有 ORDER BY 子句。有时,插入的行要等到关闭并再次打开游标后才会出现。对于 SQL Anywhere,如果必须创建工作表才能打开游标,则会出现这种情况。请参见在查询处理中使用工作表(使用 All-rows 优化目标)

UPDATE 语句可能导致行在游标中移动。如果游标有使用现有索引的 ORDER BY 子句(不必创建工作表),会发生这种情况。使用 STATIC SCROLL 游标会缓解这些问题,但需要更多的内存和处理。