为了输入,游标以顺序的或滚动的两种模式中的一种运行。顺序的游标仅可访存序列中的
下一行,因此,每一次打开游标,顺序的游标仅可通读表一次。滚动游标可访存下一行或
任何输出行,因此,滚动游标可多次读取相同的行。下列示例展示在 GBase 8s ESQL/C 中
声明的顺序的游标。
EXEC SQL DECLARE pcurs cursor for
SELECT customer_num, lname, city
FROM customer;
在打开游标之后,仅可使用检索下一行数据的顺序的访存来使用它,如下例所示:
EXEC SQL FETCH p_curs into:cnum, :clname, :ccity;
每一顺序的访存返回一个新行。
使用关键字 SCROLL CURSOR 声明滚动游标,如来自 GBase 8s ESQL/C 的下列示例所示
的那样:
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 214 -
EXEC SQL DECLARE s_curs SCROLL CURSOR FOR
SELECT order_num, order_date FROM orders
WHERE customer_num > 104
使用不同的访存选项来使用滚动游标。
例如,
ABSOLUTE 选项指定要访存的行的绝对行位
置。
EXEC SQL FETCH ABSOLUTE :numrow s_curs
INTO :nordr, :nodat
此语句访存在主变量 numrow 中给出其位置的行。您还可在此访存当前的行,或您可访存
第一行然后再次扫描所有行。然而,这些特性可能导致应用程序运行得更慢,如下一部分
描述的那样。
要了解适用于滚动游标的附加的选项,
请参阅
《GBase 8s SQL 指南:
语法》
中
的 FETCH 语句。