FETCH

    每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后:

    • 游标刚创建完之后,关联位置在第一行之前的。
    • 在抓取了一些移动行之后,关联位置在检索到的最后一行上。
    • 如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的情况下是停在第一行前面。
    • FETCH ALL或FETCH BACKWARD ALL将总是把游标的关联位置放在最后一行或者在第一行前面。

    注意事项

    • 如果游标定义了NO SCROLL,则不允许使用例如FETCH BACKWARD之类的反向抓取。
    • NEXT,PRIOR,FIRST,LAST,ABSOLUTE,RELATIVE形式在恰当地移动游标之后抓取一条记录。如果后面没有数据行,就返回一个空的结果,此时游标就会停在查询结果的最后一行之后(向后查询时)或者第一行之前(向前查询时)。
    • RELATIVE 0,FORWARD 0,BACKWARD 0都要求在不移动游标的前提下抓取当前行,也就是重新抓取最近刚抓取过的行。除非游标定位在第一行之前或者最后一行之后,这个动作都应该成功,而在那两种情况下,不返回任何行。
    • 当FETCH的游标上涉及列存表时,不支持BACKWARD、PRIOR、FIRST等涉及反向获取操作。

    其中direction子句为可选参数。

    参数说明

    • direction_clause

      定义抓取数据的方向。

      取值范围:

      • NEXT(缺省值)

        从当前关联位置开始,抓取下一行。

      • PRIOR

        从当前关联位置开始,抓取上一行。

      • FIRST

        抓取查询的第一行(和ABSOLUTE 1相同)。

      • LAST

        抓取查询的最后一行(和ABSOLUTE -1相同)。

      • 抓取查询中第count行。

        ABSOLUTE抓取不会比用相对位移移动到需要的数据行更快,因为下层的实现必须遍历所有中间的行。

        count取值范围:有符号的整数

        • count为正数,就从查询结果的第一行开始,抓取第count行。当count小于当前游标位置时,涉及到rewind操作,暂不支持。
        • count为负数或0,涉及到反向扫描操作,暂不支持。
      • RELATIVE count

        从当前关联位置开始,抓取随后或前面的第count行。

        取值范围:有符号的整数

        • count为正数就抓取当前关联位置之后的第count行。
        • 如果当前行没有数据的话,RELATIVE 0返回空。
      • count

        抓取随后的count行(和FORWARD count一样)。

      • ALL

        从当前关联位置开始,抓取所有剩余的行(和FORWARD ALL一样)。

      • FORWARD

        抓取下一行(和NEXT一样)。

      • FORWARD count

      • FORWARD ALL

        从当前关联位置开始,抓取所有剩余行。

      • BACKWARD

        从当前关联位置开始,抓取前面一行(和PRIOR一样) 。

      • BACKWARD count

        从当前关联位置开始,抓取前面的count行(向后扫描)。

        取值范围:有符号的整数

        • count为正数就抓取当前关联位置之前的第count行。
        • count为负数就抓取当前关联位置之后的第abs(count)行。
        • 如果有数据的话,BACKWARD 0重新抓取当前行。
      • BACKWARD ALL

        从当前关联位置开始,抓取所有前面的行(向后扫描) 。

    相关链接

    MOVE